所以,我在我的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我可以毫无问题地进行重定向,但我想知道是否也可以只使用重定向...也许我在这里遗漏了一些东西......
答案 0 :(得分:3)
当要重定向的文件夹与.php具有相同名称时,apache会搞砸了。
这是由于 Apache的内容协商模块在mod_rewrite
之前运行,mod_alias
并使Apache Web服务器匹配文件的扩展名。例如/file
可以在网址中,但会投放/file.php
。
要解决此问题禁用 MultiViews
,请将此规则置于.htaccess之上:
Options -MultiViews