Apache 强制主域而非子域使用HTTPS

Apache 强制主域而非子域使用HTTPS,apache,.htaccess,redirect,mod-rewrite,url-rewriting,Apache,.htaccess,Redirect,Mod Rewrite,Url Rewriting,我的站点和多个子域位于c-Panel服务器上,我希望实现以下功能: 将所有流量的HTTPS和WWW强制发送到example.com,将所有流量发送到我的主站点-> 我还通过c-Panel(未重新定向)将sub.example.com作为子域设置,其文档根为/public\u html/sub,并且该子域没有SSL。我尝试输入以下HTACCESS代码: RewriteEngine On RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https:/

我的站点和多个子域位于c-Panel服务器上,我希望实现以下功能:

将所有流量的HTTPS和WWW强制发送到example.com,将所有流量发送到我的主站点->

我还通过c-Panel(未重新定向)将sub.example.com作为子域设置,其文档根为/public\u html/sub,并且该子域没有SSL。我尝试输入以下HTACCESS代码:

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
它可以重定向主站点上的所有流量,但是当我尝试访问我的子域时,我收到一个重定向错误,说这个网页有一个重定向循环

提前感谢您的帮助!我发现了类似的帖子,但没有涉及我的具体问题。我对HTACCESS指令不太在行,重定向错误让我陷入了一个循环。再次感谢

试试看:

RewriteEngine On

#Exclude subdomain
RewriteCond %{HTTP_HOST} !^sub.domain.com$
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
要排除多个子域,可以使用多个重写条件:

RewriteCond %{HTTP_HOST} !^foo.domain.com$
RewriteCond %{HTTP_HOST} !^bar.domain.com$
或仅使用一种线型:

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

太棒了,谢谢@starkeen。这成功了!你知道如果我将来需要排除多个子域,我会怎么做吗?再次感谢