htaccess-当多个域指向同一服务器时,需要将一个非https域重定向到https

时间:2019-10-15 15:13:46

标签: apache .htaccess

当多个域指向同一服务器时,需要将一个非https域重定向到https。 详细地,所有非www域都需要重定向到www,并且只有一个域也需要重定向到www和https。

例如,具有SSL的域

http://example.com to https://www.example.com
http://www.example.com to https://www.example.com
https://example.com to https://www.example.com

域没有SSL

http://example2.com to http://www.example2.com
http://example3.com to http://www.example3.com

我已经尝试了许多this这样的stackoverflow解决方案。

我当前的htaccess如下所示,

#redirect to https - domain that having SSL
RewriteCond %{HTTP_HOST} ^example\.com [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

#all other non www to www
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} !^example\.com
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

除一种情况外,其他所有功能都可以正常工作。当我输入具有SSL的www (http://www.example.com)的域时,未重定向到https。

1 个答案:

答案 0 :(得分:0)

如果我实际上正确地遵循了您的要求,请先添加以下内容:

RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]