.htaccess将裸http和https重定向到www https

时间:2016-07-06 15:17:40

标签: apache .htaccess redirect mod-rewrite

我的某个域名中存在类似问题。我已经为naked和www-domain安装了SSL证书。

现在,我想将裸http://domain.comhttps://domain.com重定向到https://www.domain.com

我的.htaccess中有这个规则,但是当您使用https://domain.com明确访问网站时,它会涵盖重定向,但是,在访问http://domain.com时,它会重定向到http://www.domain.com而不是{{3 }}

RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

2 个答案:

答案 0 :(得分:0)

您应该使用此规则替换现有规则:

RewriteEngine On

# add www and convert http to https
RewriteCond %{HTTP_HOST} !^www\. [NC,OR]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [R=301,L,NE]

将此规则放在RewriteEngine On行的正下方,并在测试前清除浏览器缓存。

答案 1 :(得分:0)

我个人会像这样说出来,这会强制WWW和HTTPs。

RewriteEngine On

#Force WWW on everything
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

#Force HTTPS on everything
RewriteCond %{HTTPS} !=on
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]