in .htacces我正在尝试重定向到https://www
这很好用
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
但有2次重定向,我只想用1次重定向
我试过了
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
它工作正常,但如果s被删除(步骤2)我得到2次www 1)https://www.domain.com - > 2)http://www.domain.com - > 3)https://www.www.domain.com
我该如何重定向?
http://domain.com
http://www.domain.com
https://domain.com
to
https://www.domain.com
只有一次重定向,无论发生什么错误
感谢您的帮助
答案 0 :(得分:1)
这只进行一次重定向。是的,它仍然是两个规则,但只会执行一次重定向:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,NE,R=301,QSA]
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,NE,R=301,QSA]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,NE,R=301,QSA]
更紧凑的选择,虽然不是更快或更有效,但是:
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [L,NE,R=301,QSA]
此始终中的第三个条件匹配,它仅用于提取主机名的一部分而不一个重要的前导www.
。