2011-08-02 75 views
0

我試圖進行這種類型的重寫與mod_rewrite的

http://sitename/foo/var1/var2 -> http://sitename/foo/index.php?/var1/var2 

。這是我的.htaccess文件(放置在目錄FOO)的奇怪行爲顯示的$_SERVER['REDIRECT_QUERY_STRING']和值$_SERVER['REQUEST_URI']

如果我要求像http://sitename/foo/bar值的URL作爲預期是bar和分別爲。

這也適用於:http://sitename/foo/adminhttp://localhost/foo/bar

然而,當我嘗試訪問http://localhost/foo/admin(使用本地主機而不是網站名稱)的REQUEST_URI變爲/admin/?admin(這是它如何顯示在地址欄也即http://localhost/foo/admin/?admin

我搜索了所有的.htaccess文件可能會發生衝突,並且還會在級別6上打開mod_rewrite日誌記錄,但無法找到任何信息。

我不知道可能是什麼原因造成的。如果我能知道可能會導致這種情況,那將是非常好的,否則我可能會切換到nginx。

+0

爲什麼不改變重寫爲'index.php?path = $ 1',並從$ _GET ['path']'中讀取它,而不是依賴於環境的設置。 –

+0

我後來發現問題出在瀏覽器的緩存上。但我仍然遵循你的建議,並用path = $ 1替換目標部分。現在$ GET總是包含'index.php'(與$ _SERVER ['QUERY_STRING']一樣,我傳遞的參數在$ _SERVER ['REDIRECT_QUERY']字符串中,我缺少一些東西。 'RewriteRule(。*)index.php?path = $ 1 [L]' – Ravi

+0

編輯:我將整個設置移動到一個新的虛擬機,令人驚訝的是一切正常,我想我只是有一個這樣的日子 – Ravi

回答

0

感謝所有回覆。這是一些奇怪的服務器配置錯誤,在我安裝的新VM上似乎沒有問題。 @Dan Grossman,感謝您關於使用$ _GET的建議,我的一些代碼比以前更簡單。