Regex 如何将子域重定向到其他域

Regex 如何将子域重定向到其他域,regex,apache,.htaccess,mod-rewrite,Regex,Apache,.htaccess,Mod Rewrite,我试图通过htaccess mod rewrite实现的目标是: 将所有子域重定向到新域名w重写规则 e、 g test1.olddomain.com==>test1.newdomain.com test2.olddomain.com==>test2.newdomain.com test3.olddomain.com==>test3.newdomain.com 到目前为止,我所说的当然是错误的: 因为我还不是正则表达式迷,我需要你的帮助。。。谢谢你在这里给我的帮助。我也知道我们可以把前两个条件编

我试图通过htaccess mod rewrite实现的目标是:

将所有子域重定向到新域名w重写规则

e、 g

test1.olddomain.com==>test1.newdomain.com

test2.olddomain.com==>test2.newdomain.com

test3.olddomain.com==>test3.newdomain.com

到目前为止,我所说的当然是错误的:

因为我还不是正则表达式迷,我需要你的帮助。。。谢谢你在这里给我的帮助。我也知道我们可以把前两个条件编译成一个

注意:我不使用DNS重定向所有域的原因是,许多目录需要特殊的重写规则,以便在SEO上保持位置

RewriteRule ^(.+)\.olddomain\.com$ http://$1.newdomain.com/ [R=301,L]
您需要在开头指定“^”,以要求正则表达式引擎匹配从那里开始的行。接下来,匹配“.olddomain.com”之前的任何内容,并将其分配给第一个匹配的模式(稍后将在$1中访问)。您需要用括号(.+)括起来,以便将匹配分配给$1。

在.htaccess文件中,重写规则匹配的“URL”已从域名和指向当前目录的任何目录中删除。(在.htaccess文件中使用mod_rewrite是一件非常痛苦的事情;如果您可以访问服务器配置文件,请改为在那里执行!!)

因此,假设.htaccess位于DocumentRoot中,请尝试以下操作:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.*)olddomain\.com$ [NC]
RewriteRule ^(.*)$ http://%1newdomain.com/$1 [R=301,L]

%1应该与重写中的第一个组匹配,而$1应该与URL部分匹配。

我很震惊,这可能是我第一次在没有测试的情况下第一次正确重写模块!
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.*)olddomain\.com$ [NC]
RewriteRule ^(.*)$ http://%1newdomain.com/$1 [R=301,L]