在这篇文章中:My previous post我正在寻求一个奇怪问题的帮助:正确的正则表达式不能用于RewriteRule。经过几个小时的工作,我找到了如何修复错误,我发现了这个奇怪的事情。
如果我在.htaccess中写下这条规则:
RewriteRule ^rankings\/[a-zA-Z0-9\-]+\.html$ /rankings.php
并输入此网址
http://www.mywebsite.net/rankings/classifica.html
我收到404错误。即使正则表达式是正确的,apache RewriteEngine也无效。 相反,如果我写这个规则:
RewriteRule ^ran-kings\/[a-zA-Z0-9\-]+\.html$ /rankings.php
并输入此网址
http://www.mywebsite.net/ran-kings/classifica.html
一切正常。我用不同的规则和页面进行了许多其他测试,我总是遇到同样的问题。 我得出的结论是,如果模式和替换以相同的单词开头,则RewriteRule不起作用。
这怎么可能?有人知道为什么会这样吗?
答案 0 :(得分:1)
实际上真正的问题是MultiViews
option。 Multiviews
允许替换文件扩展名,因此您可以使用http://www.example.com/page.php
调用http://www.example.com/page
之类的网址。
在.htaccess上使用此行停用它:
Options -MultiViews