2012-02-03 50 views
0

我想查詢字符串?:hizzah=blah mod_rewrite的規則來重定向到brouahaha.html如何使用mod_rewrite的

我試過這種檢查編碼或未編碼字符查詢字符串:

RewriteCond %{QUERY_STRING} :hizzah=blah 
RewriteRule .* brouahaha.html 

注意在hizzah前面的冒號。

問題:如果冒號被編碼,這不起作用。即example.com?:hizzah=blah有效,但example.com?%3Ahizzah=blah沒有。

我知道擁有冒號可能是一個壞主意,因爲它是一個保留字符,但現在它是不可協商的。它必須這樣。

什麼是最簡潔的mod_rewrite方式,以允許冒號爲純文本或編碼?

回答

0

嘗試

RewriteCond %{QUERY_STRING} (:|\%3A)hizzah=blah [NC] 
RewriteRule^brouahaha.html [L] 
+0

有沒有一種更清潔的方式?也許在處理它之前避免查詢字符串?我找不到mod_rewrite文檔中的任何內容來執行此操作,但mod_rewrite是voodoo,所以我可能有些voodoo練習者知道文檔之外的其他東西。 – 2012-02-03 03:22:45

+0

@MattYork你可以使用RewriteMap(http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritemap)內部的'unescape'函數,但你需要訪問你的VirtualHost/httpd.conf它比上面更復雜 – 2012-02-03 14:02:59