Apache文档states
CondPattern是条件模式, 应用的正则表达式 到当前的实例 TestString [...] CondPattern是一个perl 兼容正则表达式 一些补充[...]
并提供了
这样的例子RewriteCond %{REMOTE_HOST} ^host1.* [OR]
我知道Perl正则表达式,但这似乎让我感到困惑:
我们在这里谈的是部分匹配吗? (模式匹配字符串中的某些子字符串,如Perl $string =~ m/pattern/;
?)
或者更确切地说是完全匹配? (模式匹配整个字符串,如在Java Pattern.matches(pattern, string)
中?)
如果匹配是部分匹配,则尾随.*
似乎是多余的。它已经满了,那么^
似乎是多余的。
我发现的很多例子,在Apache文档和各处都有这个(对我来说很明显)不一致。
更新:这是文档的问题,现在已经更正了。
答案 0 :(得分:7)
<强>部分即可。 (示例中.*
是多余的。)
Apache使用优秀的PCRE库(虽然是旧版本 - 上次我检查的Rev:5.0 2004),由Phillip Hazel编写,非常像Perl。但我同意,他们的许多例子在正则表达式精度方面都有很多不足之处。
有一些特定于Apache的扩展,例如向模式添加前导!
以将NOT
逻辑应用于匹配。我找到的最好的文档(您可能已经看过),就是这个页面:Apache Module mod_rewrite
答案 1 :(得分:7)
感谢。我已经删除了我认为你在文档中提到的正则表达式中不必要的。*。如果你找到其他人,请告诉我,我也会解决这些问题。
正则表达式是子串匹配,默认情况下,不需要匹配整个字符串(通常)。 Apache文档中隐含其他内容的地方是错误,需要修复。
当人们完全没必要时,人们往往会把。*放到正则表达式中。