当我遇到一些奇怪的行为时,我开始在我的网站上实现mod_rewrite规则。我删除了我的htaccess文件进行此测试,将其从等式中删除。
我的本地开发网站位于http://dev.mydomain.com,是虚拟主机。
如果我去,例如“http://dev.mydomain.com/blog/”,该文件夹不存在,但apache找到匹配的php文件“blog.php”,而是显示该文件。
只有在匹配的php文件时才会发生这种情况 - 如果没有,例如“http://dev.mydomain.com/barfblurg/”我只得到404.
就像上面有一些额外的mod_rewrites网站htaccess所在 - 当/ file /无法解析时,它搜索其他匹配的文件而不是服务于此 - 但是没有其他的htaccess文件会产生影响,所以这可能是一个配置的东西?我在apache.conf或php.ini中看不到会导致此行为的任何内容。
(这也不会发生在我在其他地方的现场主持人身上,所以这绝对是配置的事情。)
有人指出我要把这种行为关掉,因为它干扰了我想做的网址重写?
(Apache2,OSX,10.10.5)
答案 0 :(得分:0)
此行为是由于启用了选项MultiViews
。
MultiViews
使用选项Apache's content negotiation module
在 mod_rewrite
之前运行,并使Apache服务器匹配文件扩展名。因此/file
可以在网址中,但它会投放/file.php
。
要关闭它,请使用:
Options -MultiViews
位于.htaccess或Apache config / vhost文件的顶部。