当一个域是另一个域的子集时,.htaccess重定向

时间:2016-09-09 06:51:32

标签: .htaccess mod-rewrite url-rewriting url-redirection subdomain

抱歉,我不确定如何正确说出标题。

我有几个域名,我想使用.htaccess 301重定向到我的主域名。

这就是我正在做的事情:

RewriteCond %{HTTP_HOST} example.co.za [NC]
RewriteRule ^(.*)$ http://primarydomain.co.za/$1 [L,R=301]

我遇到了将.co域名重定向到类似.co.za域名的问题,例如:

// this causes infinite loop
RewriteCond %{HTTP_HOST} example.co [NC]
RewriteRule ^(.*)$ http://example.co.za/$1 [L,R=301]

我知道为什么会这样,但我不知道如何写这条规则或其条件。

3 个答案:

答案 0 :(得分:1)

尝试这样,

RewriteCond %{HTTP_HOST} ^example.co$ [NC]
RewriteRule ^ http://example.co.za/$1 [L,R=301]

答案 1 :(得分:1)

使用模式锚:^$来标记字符串的开头或结尾:

RewriteCond %{HTTP_HOST} ^example\.co$ [NC]
RewriteRule ^ http://example.co.za%{REQUEST_URI} [L,R=301]

答案 2 :(得分:0)

您可以使用否定条件并避免正则表达式:

# if host is not example.co.za
RewriteCond %{HTTP_HOST} !=example.co.za
# then redirect to example.co.za
RewriteRule ^ http://example.co.za%{REQUEST_URI} [NE,L,R=301]