2011-04-14 64 views
3

我希望有人能回答「爲什麼」這樣的話:漂亮的URL有時用「?」重寫有時沒有

有次我可以使用:

... 
RewriteRule ^(.*)$ index.php/$1 [L] 

,然後有次以上,其中不工作,我必須使用方法:

... 
RewriteRule ^(.*)$ index.php?/$1 [L] 

主要區別是加入的? ...我一般看到這種情況發生在不同的系統設置,FastCGI的VS模塊VS CGI,但做得還不夠設置看到的格局。

我猜測它與apache/setup如何解析path/path_info數據有關。任何想法都會受到歡迎,理想情況下,我希望對此發生的原因以及發生的原因有一個明確的解釋。

在同一個線程...有時Apache不輸出PATH_INFO環境變量這可能是這個的根本原因,但我想知道這是爲什麼。

+1

可能受'AcceptPathInfo' apache配置選項支配。 – 2011-04-14 21:50:13

+0

我用'AcceptPathInfo'玩過,但它似乎沒有影響任何東西,至少它看起來是這樣。 – farinspace 2011-04-14 22:13:44

+0

你說的是wordpress或codeigniter或兩者?因爲他們都實現了自己的路由規則。 – 2011-04-14 22:28:08

回答

0

The?是查詢字符串開頭的標記。

所以基本上你的第一條規則重寫URL "x"到一個文件"x"目錄index.php,第二重寫URL "x"index.php文件與參數"x"。 [(順便說一句,我不知道如何檢索文件中沒有名字的變量,通常你使用?var=value&var2=value2等等......)