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

.htaccess redirect when one domain is a subset of the other

抱歉,我不确定如何正确表达标题。

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

这就是我正在做的事情:

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

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

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

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

这样试试,

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

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

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

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

# 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]