在这篇文章中:我的上一篇文章我请求帮助解决一个奇怪的问题:正确的正则表达式在RewriteRule中不起作用。经过几个小时的工作,我发现了如何修复错误,并发现了这个奇怪的事情。
如果我在.htaccess:中编写此规则
RewriteRule ^rankings'/[a-zA-Z0-9'-]+'.html$ /rankings.php
并键入此URL
http://www.mywebsite.net/rankings/classifica.html
我得到一个404错误。即使Regexp是正确的,apache重写引擎也不起作用。相反,如果我写这个规则:
RewriteRule ^ran-kings'/[a-zA-Z0-9'-]+'.html$ /rankings.php
并键入此URL
http://www.mywebsite.net/ran-kings/classifica.html
一切都很好。我用不同的规则和页面进行了许多其他测试,但我总是遇到同样的问题。我得出的结论是,如果模式和替换以同一个单词开头,RewriteRule就不起作用。
这怎么可能?有人知道为什么会发生这种事吗?
实际上真正的问题是MultiViews
选项。Multiviews
允许替换文件扩展名,因此可以使用http://www.example.com/page
调用类似http://www.example.com/page.php
的URL。
使用.htaccess顶部的此行禁用它:
Options -MultiViews