2016-09-17 145 views
0

我知道這已在其他帖子(https://stackoverflow.com/a/25196859/730378https://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] 
+1

此規則應該按原樣工作。最有可能的是,從早期的實驗中'R = 301'重定向子域。 *從不*使用['R = 301']進行測試(http://stackoverflow.com/a/9204355/1741542)! –

+0

由於@PanamaJack已經提到,你甚至不需要第一個'RewriteCond'。 –

回答

1

你應該第一個條件中使用!^代替!=但在技術上你甚至都不需要第一個。如果與根域或別名匹配,它將只會重定向到根。鞏固所有這些條件並以這種方式嘗試你的代碼。清除緩存並進行嘗試。

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