http到https重定向以及www到htaccess中的非www

时间:2016-01-22 05:39:43

标签: apache .htaccess mod-rewrite redirect

我正在尝试将我的网站从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/pagehttp://domain.com/page时,我只会看到non-secure http non-www版本。

如何确保所有网址都重定向到网站的secure https non-www版本?

2 个答案:

答案 0 :(得分:3)

以下规则可以在单一规则中删除http->httpswww

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]