重定向到 SSL,且无错误的 GET 参数

重定向到 SSL,且无错误的 GET 参数

我添加了这个以.htaccess将 HTTP 重定向到 HTTPS:

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-SSL} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

它可以工作,但是它会扭曲 GET 参数。例如,urlhttp://example.com/?a=b%20c会变成http://example.com/?a=b%2520c

我该如何修复这个规则以保持 GET 参数完整?

答案1

只需使用这个:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

答案2

尝试这个

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-SSL} !on
RewriteRule ^/(.*)$ https://%{HTTP_HOST}/$1 [R=301,QSA,L]

$1 是 REQUEST_URI 中的所有内容,QSA 标志会将现有查询字符串(GET 变量)附加到新的 URL。

相关内容