我正在尝试将我的网站从http重定向到https,同时从www重定向到非www。来自Andron here的代码有效,但有一些小问题。我稍微调整了它,并重定向了从非https到https的所有内容。
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
对于以下情况,重定向可以完美运行并重定向到non-www https
版本:
domain.com
www.domain.com
www.domain.com/page
但是,当我输入domain.com/page
或http://domain.com/page
时,我只会看到non-secure http non-www
版本。
如何确保所有网址都重定向到网站的secure https non-www
版本?
答案 0 :(得分:3)
以下规则可以在单一规则中删除http->https
和www
:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\. [NC,OR]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L,NE]
出于搜索引擎优化的目的,最好避免多次重定向。
答案 1 :(得分:0)
您可以使用:
RewriteCond %{HTTP_HOST} ^www\.(.+) [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [NE,L,R=301]
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]