我不明白我的apache重写规则中的正则表达式有什么问题:
RewriteRule ^(.*)\/?$ $1.php?%1 [L]
当转到网址http://mysite.com/page1/时,我收到错误消息。但是,如果我将重写规则中的正则表达式更改为
RewriteRule ^(.*)\/$ $1.php?%1 [L]
网址http://mysite.com/page1/完美无缺。我认为问号意味着前一个模式的零或一个匹配。为什么我的问号不按照规定工作?
答案 0 :(得分:2)
正则表达式^(.*)\/?$
实际上匹配任何字符串 - 您要求“任何字符串,后跟斜杠或后跟斜杠”。因此,如果斜杠是可选的,它会将任何请求转换为无限重写循环。您可能需要RewriteCond
过滤已在.php
中结束的请求。
答案 1 :(得分:0)
让我再解释一下: