http://httpd.apache.org/docs/2.2/rewrite/intro.html说:
在mod_rewrite中,可以在正则表达式之前使用!
字符来否定它。也就是说,只有当字符串与表达式的其余部分不匹配时,才会认为该字符串已匹配。
但是,我的配置仅适用于第一条规则,但不适用于第二条规则。有人可以告诉我为什么吗?
RewriteCond %{HTTP_HOST} !^static\.example\.com
RewriteCond %{HTTP_HOST} ^host\.example\.com
RewriteRule ^(/global/.*)$ /dir1
RewriteRule !^(/global/.*)$ /dir2 #this rule doesn't work.
答案 0 :(得分:0)
实际上我通过将规则分成两部分来实现这一点。 host.example.com和example.com都运行良好。
RewriteCond %{HTTP_HOST} !^static\.example\.com
RewriteCond %{HTTP_HOST} ^host\.example\.com
RewriteRule ^(/global/.*)$ /dir1 [L]
RewriteCond %{HTTP_HOST} !^static\.example\.com
RewriteCond %{HTTP_HOST} ^host\.example\.com
RewriteRule ^(.*)$ /dir2 [L]
但我仍然想知道如何使用“!”在RewriteRule中。