私の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