我有這個安裝在我的htdocs:爲什麼.htaccess表現奇怪?通過腳本名本身,而不是給出GET變量
htdocs
htdocs/somedir
htdocs/somedir/process.php
htdocs/somedir/.htaccess
這是的.htaccess代碼:
RewriteEngine on
RewriteRule ^([^/]*)$ process.php?var=$1 [L]
我相信的是,這個規則告訴apache從最右邊的字母開始,並繼續存儲它,除非遇到/
因此,在URL http://127.0.0.1/somedir/foo
,$1
應該是foo
。對?
但是,當我去這個網址:http://127.0.0.1/somedir/foo
,一的print_r($ _ GET)在process.php
輸出這樣的:
Array
(
[var] => process.php
)
而我期望它應該這樣說:
Array
(
[var] => foo
)
那麼,爲什麼是var
的值是process.php
而不是foo
?如何編寫此重寫規則,以便var
獲得值foo
?
旁註:沒有問題,如果我提出這個process.php
& .htaccess
根或第二/第三/第四級,所有appropirate網址產生相同的結果:
像:
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
無影響。仍然'var'填充'process.php'而不是'foo' – DavChana 2012-07-28 09:20:20
好吧,如果我測試它的事情是這樣工作的。請嘗試自己:http://martinmelin.se/rewrite-rule-tester/ – arkascha 2012-07-28 09:26:28
是的,它在那裏工作,甚至在[http://htaccess.madewithlove.be/](http://htaccess.madewithlove.be /)它顯示'process.php?var = foo'是結果URL。但是在我的本地XAMPP上,它不是你可以在你的本地服務器上嘗試嗎?我也注意到'$ _SERVER [「REDIRECT_QUERY_STRING」]'等於'var = foo',而'$ _SERVER [「QUERY_STRING」]'var = process.php' – DavChana 2012-07-28 09:36:56