我希望访问例如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这样的子路径,则会失败。是否可以根据需要重定向拦截子路径访问和重定向?如果是这样,任何指针?
感谢。
答案 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需要存在才能使重写指令起作用。