的.htaccess从老根域名重定向到新的特定子域目录

问题描述:

RewriteEngine on 
RewriteRule ^(.*)$ http://www.NEWfoobar.com/$1 [R=301,L] 

我从https://*.com/a/7578810这行代码,里面.htaccess目前它通过迁移到www.OLDfoobar.comwww.NEWfoobar.com及其所有子目录结构就好了(工作预期的行为,都很好)的.htaccess从老根域名重定向到新的特定子域目录

现在,我该如何添加附加规则来捕获www.OLDfoobar.com重定向到www.NEWfoobar.com中的一个特定页面? 说例如`www.NEWfoobar.com/welcomeToNewDomain

[L]标志是什么让我。顺便说一下,我不太确定$1是什么。那不可能是RewriteRule模式的正则表达式标志,是吗?

接受的答案

RewriteEngine on 
RewriteRule ^/?$ http://www.NEWfoobar.com/some/sub/directory [R=301,L] 
RewriteRule ^(.*)$ http://www.NEWfoobar.com/$1 [R=301,L] 
+0

是的,这就是日当前脚本运行良好。除此之外,我想实现一个额外的规则,它从简单的** olddomain **重定向到** newdomain/sub-directory-uri ** – Valkyrurr

+0

@starkeen,我的prev评论和第2段是清晰的,因为它得到。所以是的。 :) – Valkyrurr

你需要

RewriteEngine on 
RewriteRule ^(.*)$ http://www.NEWfoobar.com/welcomeToNewDomain [R=301,L] 

$1意味着使用第一个捕获组是左边括号内的值。

选项中的L表示如果匹配适用,则停止处理重写规则(即,这是最后规则)。

^(.*)$手段:

`^` match beginning of string 
`(.*)` match zero or more characters and store in capture group 1 
`$` match end of string 

,如果我错过理解的,你只需要在保持老捕获你需要添加一条新的规则之前已有一个读取重定向请求根

RewriteRule ^/?$ https://www.NEWfoobar.com/welcomeToNewDomain [R=301,L] 

这将匹配空路径或只是/

+0

好吧,明白了。但它仍然不起作用。 'RewriteRule' *模式*基本上意味着任何字符串。所以如果我输入“www.oldfoobar.com/any-sub-directory-string”...给出你的建议目标,我会被重定向到http://www.NEWfoobar.com/welcomeToNewDomain/any-sub-目录字符串' – Valkyrurr

+0

@Valkyrurr不,你不会因为我没有在目标规则中包含'$ 1',所以它不会包含它。关键要素是规则模式将完全匹配任何路径。如果此规则不起作用,您看到的行为是什么? –

+0

@Valkyrurr我可能错过了解这个问题,请参阅我更新的答案。如果你想让'www.oldfoobar.com/any-sub-directory-string'重定向到一个URL,请使用我的第一个答案。如果你只是想添加一个新的重写规则,只是'www.OLDfootbar.com'然后插入我的第二个例子在你现有的重写代码 –