【问题标题】:redirect root domain only to https, not subdomain仅将根域重定向到 https,而不是子域
【发布时间】:2016-09-17 19:19:19
【问题描述】:

我知道这已在其他帖子(https://stackoverflow.com/a/25196859/730378https://stackoverflow.com/a/20915595/730378)中得到解答,但我都尝试过,但都没有为我工作。

使用下面的 htaccess 代码可以将根域和别名重定向到 https,但子域会继续重定向并使用 https 作为子域,这是我不想要的。

####
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} !=subdomain.rootdomain.ca [NC,OR]
RewriteCond %{HTTP_HOST} ^(www.)?rootdomain.ca$ [NC,OR]
RewriteCond %{HTTP_HOST} ^(www.)?rootdomain.biz$ [NC,OR]
RewriteCond %{HTTP_HOST} ^(www.)?rootdomain.co$ [NC,OR]
RewriteCond %{HTTP_HOST} ^(www.)?domainalias.biz$ [NC,OR]
RewriteCond %{HTTP_HOST} ^(www.)?domainalias.ca$ [NC]
RewriteRule (.*) https://rootdomain.ca/$1 [R=301,L]

【问题讨论】:

  • 此规则应按原样工作。子域很可能是从早期使用R=301 的实验重定向的。 从不R=301进行测试!
  • 正如@PanamaJack 已经提到的,您甚至不需要第一个RewriteCond

标签: apache .htaccess redirect https


【解决方案1】:

您应该在第一个条件下使用!^ 而不是!=,但从技术上讲,您甚至不需要第一个条件。只有当它匹配根域或别名时,它才会重定向到根。合并所有这些条件并以这种方式尝试您的代码。清除缓存并尝试一下。

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(www\.)?(rootdomain|domainalias)\.(ca|biz|co)$ [NC]
RewriteRule (.*) https://rootdomain.ca/$1 [R=301,L]

【讨论】:

  • 在我尝试过的另一台计算机上工作,因为无论我清除历史记录并缓存了多少次,它都不会生效。
  • @Olaf - 注意到再也不会使用 R=301 进行测试。
猜你喜欢
  • 2017-12-01
  • 2014-09-23
  • 2016-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-03
  • 2016-09-25
  • 1970-01-01
相关资源
最近更新 更多