0

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.
4

1 回答 1

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]

但是我仍然想知道我们如何使用“!” 在重写规则中。

于 2012-06-28T18:02:59.903 回答