减少HTTPS www HTTP的无www的重定向数量



我正在尝试将我的URL在www的情况下制作www,而我的URL和我的URL无需https重定向到https,以最小的重定向为https。

我正在使用此规则

# BEGIN SSL Redirect
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
# END SSL Redirect

问题在于,如果我尝试访问此URL

,此规则会生成许多重定向

example.com

http://example.com/==> http://www.example.com/==> https://www.example.com/

我希望你做这个

http://example.com/==> https://www.example.com/

您可以使用以下方式:

# BEGIN SSL + non www to www  Redirect
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http [OR]
RewriteCond %{HTTP_HOST} !^www. [NC]
RewriteCond %{HTTP_HOST} ^(?:www.)?(.+)$ [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [L,R=301]
</IfModule>
# END SSL + www Redirect

这将在单个请求中将非SSL和非www重定向到https://www

如果您不在代理代理服务器上(即:Cloudflare ..),那么您将需要用RewriteCond %{HTTPS} off [OR]替换此行RewriteCond %{HTTP:X-Forwarded-Proto} =http [OR],以使其工作。

最新更新