一些.htaccess重写规则不适用于dev机器

时间:2014-11-25 21:42:42

标签: apache .htaccess mod-rewrite

我有以下规则(更大的一部分)

RewriteRule ^login/?$ login.php [L]
RewriteRule ^login2/?$ login.php [L]

第一条规则不起作用,第二条规则不起作用。出于某种原因,我的服务器似乎没有选择某些重定向规则,例如login/?tools/?,但是对其添加1个字符的微小修改似乎可以“解决”问题。

此外,这些规则适用于我的生产服务器,但我目前正在设置一个带有流浪机的开发环境。这些环境有不同的Linux风格(debian prod vs ubuntu dev),并且可能有不同版本的apache(?prod,2.4 dev),但这似乎有点滑稽,导致某些RewriteRule s的奇怪行为。

1 个答案:

答案 0 :(得分:1)

您需要使用以下命令关闭Apache的内容协商功能:

Options -MultiViews

在.htaccess之上。在MultiViews之前运行的Apache's content negotiation module使用选项mod_rewrite,并使Apache服务器匹配文件扩展名。因此/file可以在网址中,但它会投放/file.php