【发布时间】:2009-08-19 19:04:42
【问题描述】:
好的,所以我正在执行 mod_rewrite,并且我需要匹配除一个之外的任何子域。它开始看起来像这样。
RewriteCond %{HTTP_HOST} ^([^\.]+)\.example\.com$ [NC]
这样可以匹配并捕获单个子域,没有句点。但是假设我不想匹配名为“dog”的子域。我试图用这样的负面前瞻性来做到这一点。
RewriteCond %{HTTP_HOST} ^((?!dog)[^\.]+)\.example\.com$ [NC]
这在大多数情况下都有效。 dog.example.com 不再匹配,这很好。但是,doggies.example.com 也不再匹配。这不好。
我能够通过使用负前瞻和负后瞻来解决这个问题。
RewriteCond %{HTTP_HOST} ^((?!dog)[^\.]+(?<!dog))\.example\.com$ [NC]
这行得通。据我所知,它工作得很好。问题是,我无法相信这是实现这场比赛的最佳方式。前瞻和后瞻?真的吗?实现等价表达式的“正确”方式是什么?
【问题讨论】:
标签: regex apache mod-rewrite