在虚拟主机配置文件中使用此规则会导致查询参数的双重转义:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
例如:
http://example.com?f=hello%20world
导致
https://example.com?f=hello%2520world
请注意“%25”转出“%”符号。为什么会这样?
答案 0 :(得分:15)
尝试在重写规则的末尾添加[NE](noescape)标记:
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [NE]
这是因为&
和?
以及其他一些在重写过程中默认转义。