6

我在 IIS 上运行 Helicon ISAPI Rewrite 的免费版本,并且有多个站点通过相同的重写规则集运行。到目前为止,这一切都很好,因为所有规则都适用于所有站点。我最近添加了一个我不想通过所有规则运行的新站点。在执行自己的规则后,有什么方法可以使对该站点的请求突破规则集。

我试过以下没有运气;对 mysite.com 的所有请求都会导致 404。我想我正在寻找的是一个什么都不做的规则,并且被标记为最后一个要执行的规则 [L]。

## New site rule for mysite.com only
RewriteCond  Host:  (?:www\.)?mysite\.com
RewriteRule  /content([\w/]*)   /content.aspx?page=$1 [L]

## Break out of processing for all other requests to mysite.com
RewriteCond  Host:  (?:www\.)?mysite\.com
RewriteRule (.*) - [L]

## Rules for all other sites
RewriteRule ^/([^\.\?]+)/?(\?.*)?$ /$1.aspx$2 [L]
...
4

4 回答 4

10

我做了类似的事情,在 WebDAV 文件夹上停止 mod_rewrite:

# stop processing if we're in the webdav folder
RewriteCond %{REQUEST_URI} ^/webdav [NC]
RewriteRule .* - [L]

这也应该适用于您的目的。如果没有,或者如果您对其他参考感兴趣,请参阅上一个问题:如何忽略 mod_rewrite 中的目录?

于 2008-10-23T12:22:28.867 回答
5

RewriteRule ^ - [END]

  • .将是不正确的,因为它至少需要 1 个字符
  • .* 恕我直言,效率可能会降低
  • L 比 END 差,因为它允许额外的轮次,包括内部重定向。只有 END 真正停止。→详情
于 2017-11-25T15:23:38.800 回答
2

自己重写?

RewriteCond  Host:  (?:www\.)?mysite\.com
RewriteRule ^(.*)$ $1 [QSA,L]
于 2008-10-23T08:58:56.890 回答
1

我不知道 ISAPI Rewrite 语法,但是在IIRF上,“break out”规则是这样的:

## Break out of processing for all other requests to mysite.com
RewriteCond %{SERVER_NAME}  ^(?:www\.)?mysite\.com$
RewriteRule (.*) - [L]

或者

## Break out of processing for all other requests to mysite.com
RewriteCond %{HTTP_HOST}  ^(?:www\.)?mysite\.com$
RewriteRule (.*) - [L]

在每种情况下,规则都说“不要重写(并且不要再处理任何规则)”,并且当使用的主机名是 mysite.com 或 www.mysite.com 时适用。[L] 标志是表示“不再处理任何规则”的部分,而 - 替换是表示“不要重写”的部分。

于 2009-07-15T00:59:50.507 回答