只将根域名重定向到https,而不是子域
我知道这已在其他帖子(https://stackoverflow.com/a/25196859/730378和https://stackoverflow.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]
你应该第一个条件中使用!^
代替!=
但在技术上你甚至都不需要第一个。如果与根域或别名匹配,它将只会重定向到根。巩固所有这些条件并以这种方式尝试你的代码。清除缓存并进行尝试。
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(www\.)?(rootdomain|domainalias)\.(ca|biz|co)$ [NC]
RewriteRule (.*) https://rootdomain.ca/$1 [R=301,L]
在另一台计算机上工作我尝试过,无论多少次清除历史记录并缓存这一个,它都不会生效。 – spiderling
@Olaf - 注意不要再次用R = 301进行测试。 – spiderling
此规则应该按原样工作。最有可能的是,从早期的实验中'R = 301'重定向子域。 *从不*使用['R = 301']进行测试(http://stackoverflow.com/a/9204355/1741542)! –
由于@PanamaJack已经提到,你甚至不需要第一个'RewriteCond'。 –