2011-06-07 20 views
7

在虛擬主機配置文件中使用這個規則會導致雙倍的查詢參數的轉義:的Apache2重寫查詢字符串逃過兩次

RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 

例如:

http://example.com?f=hello%20world 

引出

https://example.com?f=hello%2520world 

請注意轉義「%」符號的「%25」。這是爲什麼發生?

回答

14

嘗試在重寫規則的末尾添加[NE](noescape)標籤:

RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [NE] 

這是因爲&?和其他一些默認情況下,在改寫過程中逃脫。

+0

非常感謝,解決了這個問題。 – gaspard 2011-06-07 18:37:46