我正在尝试将我的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]
,以使其工作。