我有以下规则(更大的一部分)
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的奇怪行为。
答案 0 :(得分:1)
您需要使用以下命令关闭Apache的内容协商功能:
Options -MultiViews
在.htaccess之上。在MultiViews
之前运行的Apache's content negotiation module
使用选项mod_rewrite
,并使Apache服务器匹配文件扩展名。因此/file
可以在网址中,但它会投放/file.php
。