强制HTTPS为主域而非子域

时间:2016-02-09 17:38:02

标签: apache .htaccess redirect mod-rewrite url-rewriting

我在c-Panel服务器上有我的网站和几个子域,并希望实现以下功能:

强制HTTPS和WWW用于所有到example.com的流量,以获取到我的主站点的所有流量 - > https://www.example.com/what-ever-page-or-directory

我还有一个 sub.example.com 作为子域设置,通过c-Panel(不是重定向),其文档根目录是/ public_html / sub,这个子域没有'有一个SSL。我尝试输入以下HTACCESS代码:

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

适用于重定向主站点上的所有流量,但是当我尝试访问我的子域http://sub.example.com时,我收到重定向错误,说明此网页有重定向循环

提前感谢您的帮助!我找到了类似的帖子,但没有涉及我的具体问题。我对HTACCESS指令并不好,重定向错误让我陷入循环。再次感谢!

1 个答案:

答案 0 :(得分:1)

尝试:

RewriteEngine On

#Exclude subdomain
RewriteCond %{HTTP_HOST} !^sub.domain.com$
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

要排除多个子域,您可以使用多个RewriteConds:

RewriteCond %{HTTP_HOST} !^foo.domain.com$
RewriteCond %{HTTP_HOST} !^bar.domain.com$

或只是一个班轮图案:

 RewriteCond %{HTTP_HOST} !^(foo|bar).domain.com$