好的,我正在进行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]
这个方法是有效的,就我所知它可以完美地工作。问题是,我不相信这是实现此匹配的最佳方法。前瞻和后顾?真的吗?有没有更好的方法来实现等效表达式呢?