htaccess重定向catchall

时间:2012-10-11 16:11:32

标签: apache .htaccess redirect url-rewriting catch-all

我需要将目录以及该目录中的所有子目录和文件重定向到同一位置(root)。因此,任何试图访问/old/old/folder/old/other-folder/xy/page.php或“旧”文件夹中任何其他位置的人都应该重定向到根域。

到目前为止,我有这个:

Redirect 301 ^/old/.*$ /

这是最好的方法,还是使用(.*)代替.*会更好?这两者有什么区别?

或者 - 我应该使用RewriteRule而不是像上面那样的Redirect吗?如果是这样,为什么?

谢谢!

2 个答案:

答案 0 :(得分:1)

Redirect指令不使用正则表达式。它将两个路径节点连接在一起,这不是您想要的。您可以尝试使用RedirectMatch指令:

RedirectMatch 301 ^/old/ /

答案 1 :(得分:0)

你可以试试这个

RewriteEngine On
RewriteBase /
RewriteRule ^old/?(.*) /$1 [R=301,NC,L]

如果你只是想将每个旧页面重定向到主页/ root(我不确定你想要的是什么),那么你可以用

替换最后一次重写。
RewriteRule ^old/.* / [R=301,NC,L]