Php 在RewriteRule中,如果模式和替换以相同的字符串开头,则RewriteRule不会';不行。为什么?
在这篇文章中:我问了一个奇怪的问题:一个正确的regexp在重写规则中不起作用。经过几个小时的工作,我发现了如何修复错误,我发现了这个奇怪的事情 如果我在.htaccess中写入此规则:Php 在RewriteRule中,如果模式和替换以相同的字符串开头,则RewriteRule不会';不行。为什么?,php,regex,apache,.htaccess,mod-rewrite,Php,Regex,Apache,.htaccess,Mod Rewrite,在这篇文章中:我问了一个奇怪的问题:一个正确的regexp在重写规则中不起作用。经过几个小时的工作,我发现了如何修复错误,我发现了这个奇怪的事情 如果我在.htaccess中写入此规则: RewriteRule ^rankings\/[a-zA-Z0-9\-]+\.html$ /rankings.php 然后键入此URL http://www.mywebsite.net/rankings/classifica.html http://www.mywebsite.net/ran-kings/c
RewriteRule ^rankings\/[a-zA-Z0-9\-]+\.html$ /rankings.php
然后键入此URL
http://www.mywebsite.net/rankings/classifica.html
http://www.mywebsite.net/ran-kings/classifica.html
我得到一个404错误。即使Regexp是正确的,apache重写引擎也无法工作。
相反,如果我写这条规则:
RewriteRule ^ran-kings\/[a-zA-Z0-9\-]+\.html$ /rankings.php
然后键入此URL
http://www.mywebsite.net/rankings/classifica.html
http://www.mywebsite.net/ran-kings/classifica.html
一切正常。我用不同的规则和页面做了很多其他的测试,我总是遇到同样的问题。
我得出的结论是,如果模式和替换以同一个单词开头,重写规则就不起作用
这怎么可能呢?有人知道为什么会这样吗?事实上真正的问题是<代码>多视图允许替换文件扩展名,因此您可以调用类似
http://www.example.com/page.php
使用http://www.example.com/page
使用.htaccess上方的这一行来禁用它:
Options -MultiViews
事实上,真正的问题是<代码>多视图允许替换文件扩展名,因此您可以调用类似
http://www.example.com/page.php
使用http://www.example.com/page
使用.htaccess上方的这一行来禁用它:
Options -MultiViews