只将根域名重定向到https,而不是子域

问题描述:

我知道这已在其他帖子(https://*.com/a/25196859/730378https://*.com/a/20915595/730378)中得到解答,但我已经尝试过它们,但都没有为我工作。只将根域名重定向到https,而不是子域

使用下面的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] 
+1

此规则应该按原样工作。最有可能的是,从早期的实验中'R = 301'重定向子域。 *从不*使用['R = 301']进行测试(http://*.com/a/9204355/1741542)! –

+0

由于@PanamaJack已经提到,你甚至不需要第一个'RewriteCond'。 –

你应该第一个条件中使用!^代替!=但在技术上你甚至都不需要第一个。如果与根域或别名匹配,它将只会重定向到根。巩固所有这些条件并以这种方式尝试你的代码。清除缓存并进行尝试。

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

在另一台计算机上工作我尝试过,无论多少次清除历史记录并缓存这一个,它都不会生效。 – spiderling

+0

@Olaf - 注意不要再次用R = 301进行测试。 – spiderling