.htaccess 301重定向路径和所有子路径

时间:2010-11-15 05:19:17

标签: .htaccess redirect

我希望访问例如www.thisdomain.com/docs/path1/path2重定向到www.thatdomain.com/path1/path2

(请注意,docs不是新路径的一部分)

我在www.thisdomain.com上有以下内容:

RewriteEngine on

RewriteRule ^docs/* http://www.domain.com/ [R=301,L]    

如果我访问www.thisdomain.com/docs,它会指向www.thatdomain.com,但如果我访问像www.thisdomain.com/docs/path1/path2这样的子路径,则会失败。是否可以根据需要重定向拦截子路径访问和重定向?如果是这样,任何指针?

感谢。

2 个答案:

答案 0 :(得分:5)

使用正则表达式,*表示前一个原子的任何数字,它将匹配/ docs和/ docs /。试试这个:

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

QSA是查询字符串追加,因此/docs/foo?bar=baz不会丢失?bar=baz。)

答案 1 :(得分:2)

根据我发现搜索“htaccess redirect”(没有双引号)的the first Google result的“使用htaccess重定向将旧域重定向到新域”一节,这段代码就足够了:

Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L]

根据他们对技术的描述,它将重定向目录.htaccess文件以递归方式放置(包括任何子路径),就像你想要的那样。当然,mod_rewrite需要存在才能使重写指令起作用。