regex-.htaccess 301将一个子域重定向到另一个,用于多个TLD

我想更改站点的子域,并希望使对301个用户使用的RewriteRules更简单,因为当前我必须有多个规则来解决各种可能的情况.

有没有一种方法可以用一条规则执行以下操作:

subold.domain.com -> subnew.domain.com
subold.domain.co.uk -> subnew.domain.co.uk
subold.domain.local -> subnew.domain.local
subold-staging.domain.com -> subnew-staging.domain.com
subold-staging.domain.co.uk -> subnew-staging.domain.co.uk
subold-staging.domain.local -> subnew-staging.domain.local

因此,基本上,我需要检测主机中存在subold,将其更改为subnew并重定向到此新的子域,以保留用户尝试访问的任何TLD.

目前,我的规则如下:

RewriteCond %{HTTP_HOST} ^subold.domain.local [NC]
RewriteRule ^(.*)$http://subnew.domain.local/$1 [L,R=301]

RewriteCond %{HTTP_HOST} ^subold-staging.domain.local [NC]
RewriteRule ^(.*)$http://subnew-staging.domain.local/$1 [L,R=301]

RewriteCond %{HTTP_HOST} ^subold.domain.com [NC]
RewriteRule ^(.*)$http://subnew.domain.com/$1 [L,R=301]

RewriteCond %{HTTP_HOST} ^subold-staging.domain.com [NC]
RewriteRule ^(.*)$http://subnew-staging.domain.com/$1 [L,R=301]

RewriteCond %{HTTP_HOST} ^subold.domain.co.uk [NC]
RewriteRule ^(.*)$http://subnew.domain.co.uk/$1 [L,R=301]

RewriteCond %{HTTP_HOST} ^subold-staging.domain.co.uk [NC]
RewriteRule ^(.*)$http://subnew-staging.domain.co.uk/$1 [L,R=301]
最佳答案
假设您的真实域名中存在subold和subnew的区别.

您只能有一个这样的规则:

RewriteCond %{HTTP_HOST} ^subold\.(.+)$[NC]
RewriteRule ^ http://subnew.%1%{REQUEST_URI} [L,R=301]

转载注明原文:regex-.htaccess 301将一个子域重定向到另一个,用于多个TLD - 代码日志