私のhtdocsにこの設定があります:
htdocs
htdocs/somedir
htdocs/somedir/process.php
htdocs/somedir/.htaccess
これは .htaccess コードです:
RewriteEngine on
RewriteRule ^([^/]*)$ process.php?var=$1 [L]
私が信じているのは、このルールは apache に最も右の文字から開始し、それが遭遇しない限りそれを保存し続けるように指示する/というhttp://127.0.0.1/somedir/fooこと$1ですfoo。右?
しかし、この URL:http://127.0.0.1/somedir/fooにアクセスすると、print_r($_GET) は次のようにprocess.php出力します。
Array
(
[var] => process.php
)
私はそれがこれを言うべきだと思っています:
Array
(
[var] => foo
)
では、なぜ isvarの値は isprocess.phpであり、 notなのfooですか? var値を取得するようにこの書き換えルールを記述する方法はfoo?
補足:これをprocess.php&.htaccessルートまたは任意の第 2/第 3/第 4 レベルに移動しても、すべての適切な URL は同じ結果を生成します。
お気に入り:
http://127.0.0.1/foo //process.php & .htaccess in root
http://127.0.0.1/somedir/foo //process.php & .htaccess in htdocs/somedir
http://127.0.0.1/somedir/2nd/foo //process.php & .htaccess in htdocs/somedir/2nd
更新 01:
$_SERVER["REDIRECT_QUERY_STRING"]が に等しいことに気付きましたがvar=foo、$_SERVER["QUERY_STRING"]はvar=process.php