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

当存在同名文件时,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/

重定向至:

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

该规则在我的测试机器上运行良好。


然而在另一台机器上,
它失败了如果有以相同名称开头的文件

/
|- 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”,请求将按预期重定向。

什么配置标志会导致这种行为?
(我已经为此苦苦思索了一段时间了)

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

(而且对我来说这也没什么意义:()

答案1

你有mod_negotiation是否已安装?如果已安装,它将接受您的新请求并尝试找出您真正想要发送的文件。请确保您没有Options MultiViews设置。因此,在.htaccessput中Options -MultiViews

相关内容