我的 htdocs 中有这个设置:
htdocs
htdocs/somedir
htdocs/somedir/process.php
htdocs/somedir/.htaccess
这是 .htaccess 代码:
RewriteEngine on
RewriteRule ^([^/]*)$ process.php?var=$1 [L]
我相信这条规则告诉 apache 从最右边的字母开始并继续存储它,除非它遇到一个/
So, in URL http://127.0.0.1/somedir/foo
, $1
should be foo
。对?
但是当我去这个 URL:http://127.0.0.1/somedir/foo
时,一个 print_r($_GET) inprocess.php
输出这个:
Array
(
[var] => process.php
)
而我希望它应该这样说:
Array
(
[var] => foo
)
那么为什么是var
的价值是process.php
而不是foo
呢?如何编写此重写规则以var
获取值foo
?
旁注:无论我是否将此process.php
&移动.htaccess
到根目录或任何第二/第三/第四级,所有适当的 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