我試圖進行這種類型的重寫與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/admin
和http://localhost/foo/bar
。
然而,當我嘗試訪問http://localhost/foo/admin
(使用本地主機而不是網站名稱)的REQUEST_URI變爲/admin/?admin
(這是它如何顯示在地址欄也即http://localhost/foo/admin/?admin
)
我搜索了所有的.htaccess文件可能會發生衝突,並且還會在級別6上打開mod_rewrite日誌記錄,但無法找到任何信息。
我不知道可能是什麼原因造成的。如果我能知道可能會導致這種情況,那將是非常好的,否則我可能會切換到nginx。
爲什麼不改變重寫爲'index.php?path = $ 1',並從$ _GET ['path']'中讀取它,而不是依賴於環境的設置。 –
我後來發現問題出在瀏覽器的緩存上。但我仍然遵循你的建議,並用path = $ 1替換目標部分。現在$ GET總是包含'index.php'(與$ _SERVER ['QUERY_STRING']一樣,我傳遞的參數在$ _SERVER ['REDIRECT_QUERY']字符串中,我缺少一些東西。 'RewriteRule(。*)index.php?path = $ 1 [L]' – Ravi
編輯:我將整個設置移動到一個新的虛擬機,令人驚訝的是一切正常,我想我只是有一個這樣的日子 – Ravi