找不到RedirectMatch文件

时间:2014-11-30 13:39:10

标签: apache .htaccess mod-rewrite redirect

所以,我在我的web根目录下有一个admin.php文件,我希望每次有人写/ admin都被重定向到/admin.php。

我在我的htaccess中写道

  

RedirectMatch 301 ^ / admin $ /admin.php

但是,我收到来自apache的错误"找不到文件"。

我创建了一个空的/ admin文件夹,它可以工作......


然后我尝试将另一个(也是不存在的文件夹)重定向到admin.php。所以我写了

  

RedirectMatch 301 ^ / blah $ /admin.php

它有效......


最后我删除了admin.php,我把这个东西重定向到另一个.php

  

RedirectMatch 301 ^ / admin $ /index.php

它再次有效......


据我所知,由于某种原因,当要重定向的文件夹与.php具有相同名称时,apache会搞乱。

使用Rewrite我可以毫无问题地进行重定向,但我想知道是否也可以只使用重定向...也许我在这里遗漏了一些东西......

1 个答案:

答案 0 :(得分:3)

  当要重定向的文件夹与.php具有相同名称

时,apache会搞砸了。

这是由于 Apache的内容协商模块mod_rewrite之前运行,mod_alias并使Apache Web服务器匹配文件的扩展名。例如/file可以在网址中,但会投放/file.php

要解决此问题禁用 MultiViews,请将此规则置于.htaccess之上:

Options -MultiViews