正規表現やRewriteEngineについては、私は望めないので、今までの研究や試行の時間は今のところかなり無駄でした。この複雑なことをmod_rewriteでどうやって行うのですか?
私はこれらの規則に従います振る舞いを達成するためにRewriteEngineを使用しようとしている:
要求されたURLの場合...
- は...例えば、既存のファイルを指します
domain.com/existing_file.ext
- には書き換え
- しない...空である、または唯一例えばスラッシュ(ES)後続含ま
domain.com/
- 書き換え
index.php?var=example
- 書き換え
- に...(又は末尾スラッシュなし)ルートない例えば既存のディレクトリを指し示します
domain.com/existing_directory
REQUESTED_DIRECTORY_PATH
は(最後のスラッシュなしで、好ましくは常に)domain.com
後のすべてですindex.php?var=REQUESTED_DIRECTORY_PATH/example
に書き換え
- に...空ではありませんが、既存のファイルまたはディレクトリ例えばを指していません。
REQUESTED_URL
がすべてですindex.php?var=REQUESTED_URL
からdomain.com/no_such_file_or_directory
- 書き換え、
domain.com
- 書き換え、
後これは私がこれまで持っているものです:
#/
RewriteRule ^$ index.php?var=example [QSA,L]
# /directory_name/
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+[^/])$ /index.php?var=$0/example [QSA,L]
# /not_a_valid_file_or_dir/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?var=$0 [QSA,L]
を私に思われます私がしたいときを除いて、ほとんど私が望むことをする。 domain.com/existing_directory
にアクセスしてください(末尾にスラッシュを付けてもしなくてもかまいません)。この場合、domain.com/existing_directory/
(スラッシュ)にリダイレクトされますが、私はdomain.com/index.php?var=existing_directory/example
になりたいと思います。
URLを実際に '/ blah'から' /index.php?var = blah'に変更したいのですか? – Bananaapple
@Bananaappleいいえ、URLは '/ blah'と表示され、内部リクエストは' /index.php?var = blah'になります。 – user6003859
あなたのサンプルのhtaccessコードには、あなたの記述が '/ existing_directory'から'/existing_directory/'にリダイレクトされる何もありません。 htaccessファイルに他の指示がありますか? – Bananaapple