我添加了这个以.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。