我不明白我的 apache 重写规则中的正则表达式有什么问题:
RewriteRule ^(.*)\/?$ $1.php?%1 [L]
当转到网址http://mysite.com/page1/时,出现错误。但是,如果我将重写规则中的正则表达式更改为
RewriteRule ^(.*)\/$ $1.php?%1 [L]
url http://mysite.com/page1/工作得很好。我认为问号意味着前一个模式的零个或一个匹配。为什么我的问号没有按说明工作?
我不明白我的 apache 重写规则中的正则表达式有什么问题:
RewriteRule ^(.*)\/?$ $1.php?%1 [L]
当转到网址http://mysite.com/page1/时,出现错误。但是,如果我将重写规则中的正则表达式更改为
RewriteRule ^(.*)\/$ $1.php?%1 [L]
url http://mysite.com/page1/工作得很好。我认为问号意味着前一个模式的零个或一个匹配。为什么我的问号没有按说明工作?
正则表达式^(.*)\/?$
实际上将匹配任何字符串——您要求“任何字符串,后跟斜杠或不后跟斜杠”。因此,如果斜杠是可选的,它将把任何请求变成一个无限的重写循环。您可能需要RewriteCond
过滤掉已经以.php
.
让我再解释一下: