実現したいこと
apache の RewriteRule の動作について質問です。
全てのリクエストをindex.phpで処理させるため、以下のような .htaccess を配置しました。
パス:htdocs/web/test/.htaccess
<IfModule mod_rewrite.c> RewriteEngine on RewriteRule (.*) index.php?p=$1 </IfModule>
質問
http://localhost/web/test/123/ にアクセスしたところ、
$_SERVER["QUERY_STRING"] の値は、
p=index.php
となりました。
「123/」 が (.*) とマッチして、index.php?p=123/ になると思っていたのですが、
なぜ p=index.php だけとなり、「123/」が消えてしまうのでしょうか?
試したこと
<IfModule mod_rewrite.c> RewriteEngine on RewriteRule (.*) index.php?p=$1 [END] </IfModule>
ルールの最後に [END] をつけると QUERY_STRING が 「p=123」となりました。
URL書き換え後にもう一度ルールが適用されて「123/」が消えると思うのですが、
なぜ消えてしまうのかがわかりません。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/19 12:43