RewriteCond 和 RewriteRule 以永久重定向到 https://www.并保留查询字符串



我正在使用如下所示的mod_rewrite条件/规则将URL重定向到www等效项并确保https。

RewriteCond %{HTTP_HOST} ^example.com [NC]  
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301,NC]

例如,这会将example.com/foo/bar转换为https://www.example.com/foo/bar并且工作正常。但是,如果链接包含查询字符串(例如,http://example.com/foo/bar?x=baz&y=qux),则不会附加查询字符串。如何修改上面的重写Cond/RewriteRule,以便http://example.com/foo/bar?x=baz&y=qux自动转换为 附加了查询字符串https://www.example.com/foo/bar?x=baz&y=qux?我尝试在重写规则中添加 QSA(查询字符串追加)标志,但这没有帮助。

您需要 QSA 标志(查询字符串追加)

RewriteCond %{HTTP_HOST} ^example.com [NC]  
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301,NC,QSA]

第二种选择

RewriteRule ^(.*)$ https://www.example.com/$1?%{QUERY_STRING} [L,R=301,NC]

最新更新