2012-03-10 76 views
0

我一直在使用tuckey Apache mod重寫引擎來重寫url。但是我對逃逸點裝飾URLS問題,如下圖所示,在Apache中轉義點mod_rewrite

www.example.com/hello.world -> www.example.com/derive.php 

遵守規則是我寫上面做事情的人,

RewriteRule ^/?(([A-Za-z0-9:-])+([.]*))$ /derive.php[L] 

RewriteRule ^/?(([A-Za-z0-9:-\.])+)$ /derive.php[L]不受tuckey允許)

我認爲這個問題可以很好地回答那些誰已經使用tuckey來裝飾網址。

回答

2

在一個字符類中,點沒有任何特殊的含義,所以它不應該被轉義;你應該可以簡單地寫:

RewriteRule ^(?!/?derive[.]php$)/?[A-Za-z0-9:.-]+$ /derive.php [L] 
+0

謝謝Ruakh, 仍然我無法得到它的工作。你的解決方案給了我一個java.lang.StackOverflowError。 就像我上面提到的,我在GAE應用程序中使用了tuckey mod_rewrite引擎。顯然它不支持所有的mod_rewrite選項。 任何人都有解決這個問題的方法嗎? 謝謝, – 2012-03-10 13:48:50

+0

@ChamikaDilshan:我懷疑這是因爲無限遞歸 - '/ derive.php'本身符合這個規則,所以它無限遞歸。 ('[L]'應該可以防止這種情況,但是Tuckey可能不會很好地支持它)所以我修改了正則表達式,在應用此規則時明確排除了'derive.php'。 – ruakh 2012-03-10 14:08:18

+0

非常感謝Ruakh 它的工作。 – 2012-03-10 14:31:48