在深度添加尾部斜杠2子目录时,mod_rewrite规则会中断

时间:2013-02-04 05:48:38

标签: .htaccess mod-rewrite

我对mod重写规则非常非常新,并且遇到了一个我正在使用的将以前托管在子目录中的站点重定向到新域的问题。这是我正在使用的规则:

RewriteEngine on
RewriteBase /oldsite/ #also tried this without the trailing slash
RewriteRule ^.* http://newsite.com [R=301,NC,L]

这非常有效,直到您获得3级深度并向重定向的网址添加尾部斜杠。所以,结果看起来像这样:

  • olddomain.com/oldsite重定向到newsite.com [正确]
  • olddomain.com/oldsite/重定向到newsite.com [正确]
  • olddomain.com/oldsite/subdirectory重定向到newsite.com/subdirectory [正确]
  • olddomain.com/oldsite/subdirectory/重定向到newsite.com [INCORRECT!]

我觉得我99%在那里,但是把头发拉出来有点弄清楚最后一点点。知道我需要改变什么吗?

谢谢!

另外,我测试了将.htaccess文件放在公共html文件夹以及/ oldsite文件夹中,并且网站上没有其他htaccess文件。

1 个答案:

答案 0 :(得分:1)

你差不多了,把它放在你服务器上/ oldsite的.htaccess中:

RewriteEngine On
RewriteRule (^.*) http://newsite.com/$1 [R=301,NC,L] 

当你在正则表中使用正则表达式匹配时,它可以用作$ 1。如果你有一个以上,第一个是1美元,第二个是2美元等等。

我建议阅读mod_rewrite的手册页,特别是rewriterule部分(http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriterule)。

相关问题