我在我的 .htaccess
文件中使用类似于以下内容的内容将所有 http
请求重定向到 https
:
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
这是可行的,除了使用转义参数传递 URL 的情况,例如:
http://www.example.com/download.php?go=app%20name
重定向时,再次被错误地转义为:
https://www.example.com/download.php?go=app%2520name
我该如何解决这个问题?
最佳答案
使用NE
or noescape
flag在你的规则中:
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
确保在测试更改之前清除浏览器缓存。
关于linux - .htaccess RewriteRule 将 http 重定向到 https 搞乱了 URL 中的 % 转义参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46629602/