2012-04-12 98 views
0

我使用mod_rewrite來標識傳遞到形式我的web應用程序的工作:mod_rewrite的不目錄名

http://clipi.ca/1W 

我用一個簡單的正則表達式識別這些:

RewriteCond %{REQUEST_URI} ^/([0-9a-zA-Z]+)$ 
RewriteRule ^(.*)$ /index.php?urlid=%1 [L,QSA] 

...在大多數情況下工作正常。但是我注意到,當標識符是目錄的名稱時,重寫失敗,並且Apache正在返回一個目錄索引!

如何阻止此行爲並使重寫規則適用於目錄? (請注意,只要引用了目錄中的實際文件,重寫條件就會失敗,這不成問題。)

回答

0

我想我可能自己弄明白了:很明顯,Apache會追加一個尾部的斜槓到請求映射到文件系統上的目錄之前它應用任何重寫規則。這是一種愚蠢的,海事組織,但通過添加一個可選的尾部斜槓我的條件正則表達式:

RewriteCond %{REQUEST_URI} ^/([0-9a-zA-Z]+)/?$ 

...這似乎是工作!

不過,理想的解決方案是讓Apache到而不是追加尾部斜槓開始。如果有人知道如何做到這一點,請在此發佈,我會給你答案。