【问题标题】:Forcing HTTPS for Main Domain, Not Sub-Domain强制主域使用 HTTPS,而不是子域
【发布时间】:2016-02-09 17:38:01
【问题描述】:

我在 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 指令不是很好,重定向错误让我陷入了循环。再次感谢!

【问题讨论】:

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


    【解决方案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$
    

    或只有 1 个衬里图案:

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

    【讨论】:

    • 太棒了,谢谢@starkeen。这行得通!如果将来需要,您知道我将如何排除多个子域吗?再次感谢
    猜你喜欢
    • 2023-03-23
    • 1970-01-01
    • 2014-01-20
    • 2014-09-23
    • 1970-01-01
    • 2016-03-20
    • 2012-01-01
    • 2016-09-25
    • 2014-08-15
    相关资源
    最近更新 更多