当同名文件存在时,apache mod_rewrite失败

完整的.htaccess文件

RewriteEngine on RewriteBase / RewriteRule ^([a-z0-9_\-]+)/([a-z0-9_\-]+)/(index\.php)?$ /main.php?type=$1&action=$2 [NC,QSA,L] 

所以,

 www.server.com/users/new/ 

redirect到:

 www.server.com/main.php?type=users&action=new 

该规则在我的testing机器上正常工作。


但是
在另一台机器上, 如果有一个以相同名称开头的文件 ,则会失败:

 / |- main.php | +--[users] |- new.inc.js 

请求

 www.server.com/users/list/ --> 200 OK (main.php returns results as expected) www.server.com/users/new/ --> 404 Not Found 

如果我删除`new.inc.js',请求将按照预期redirect。

什么configuration标志导致这种行为?
(我现在头撞墙了一段时间了)

更新 (我添加了完整的.htaccess文件内容) index.htmlindex.php是目录索引

(这对我来说也没有意义:()

你有mod_negotiation安装mod_negotiation ? 如果是这样的话,那么你的请求就会变成新的,并试图找出你真正要发送的文件。 确保您没有设置Options MultiViews 。 所以,在.htaccessOptions -MultiViews