0

mod-rewrite の質問です。

なぜ次のコード

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^search/(.*)$ http://www.example.com/forms/index.php?i=$1 [QSA,L]

URLがから変更されます

http://www.example.com/search/foo/bar

http://www.example.com/forms/index.php?i=foo/bar

次のコード:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^search/(.*)$ /forms/index.php [L]

入力URLを変更しませんか?

洞察はありますか?

ありがとう。

4

1 に答える 1

1

http://www.example.com, mod_rewrite暗黙のリダイレクトがある場合R、ルールのフラグを入れるのと同じだからです。

mod_rewrite documentationの「置換文字列」の下には、次のように記載されています。

絶対 URL

絶対 URL が指定されている場合、mod_rewrite は、ホスト名が現在のホストと一致するかどうかを確認します。存在する場合、スキームとホスト名は取り除かれ、結果のパスは URL パスとして扱われます。それ以外の場合、指定された URL に対して外部リダイレクトが実行されます。外部リダイレクトを現在のホストに強制的に戻すには、以下の [R] フラグを参照してください。

于 2013-10-26T22:10:41.657 に答える