Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在RewriteRule中,如果模式和替换以相同的字符串开头,则RewriteRule不会';不行。为什么?_Php_Regex_Apache_.htaccess_Mod Rewrite - Fatal编程技术网

Php 在RewriteRule中,如果模式和替换以相同的字符串开头,则RewriteRule不会';不行。为什么?

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

在这篇文章中:我问了一个奇怪的问题:一个正确的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/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