2011-05-06 120 views
0

我有一個的mod_rewrite規則是這樣的:mod_rewrite的地方重寫規則相匹配的目錄

RewriteRule ^(alice)/?$ bob.php?page=$1 [L] 

如果我去http://localhost/alice/,它讀取bob.php(如預期)。如果我轉到http://localhost/alice(無結束斜槓),它會讀取bob.php(同樣如預期的那樣)。

如果我在htdocs中創建一個名爲「alice」的目錄,並且轉到http://localhost/alice/,它會讀取bob.php。但是,如果我轉到http://localhost/alice,它現在重定向到http://localhost/alice/?page=alice。它仍然讀取bob.php(這是我想要的),但我寧願它不會改變這樣的URL。

爲什麼它這樣做,是否有任何方法來防止它(除了沒有這樣的目錄撒謊)?

+0

移到serverfault? – QuantumMechanic 2011-05-06 05:22:39

+0

@QuantumMechanic:我認爲首先將它發佈在那裏,但SO有3716個標記爲mod-rewrite的問題,而SF只有578個。當然,受歡迎程度並沒有使事情正確,但根據我的經驗,重寫規則是問題的程序員,而不是系統管理員。 – 2011-05-06 05:30:03

回答

0

它似乎是由/?最後 - 刪除?原因(當愛麗絲目錄存在):

  • /艾麗斯被重定向到/愛麗絲/,並顯示爲/bob.php?page=alice
  • /艾麗斯/顯示爲/bob.php? page = alice

如果愛麗絲目錄不存在,/愛麗絲將不會被重定向(但/愛麗絲/將)。如果您知道該目錄是否存在,您可以選擇是使用/還是/ ?.

0
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(alice)/?$ bob.php?page=$1 [L] 
+0

感謝您的回覆。但是,我確實希望http:// localhost/alice顯示bob.php,我只是不希望它改變URL。我編輯了我的問題來澄清這一點。 – 2011-05-06 07:23:35