在匹配的RewriteCond上停止执行Mod_Rewrite

Rob*_*ell 6 mod-rewrite

我在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]
...
Run Code Online (Sandbox Code Playgroud)

Jay*_*Jay 10

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

# stop processing if we're in the webdav folder
RewriteCond %{REQUEST_URI} ^/webdav [NC]
RewriteRule .* - [L]
Run Code Online (Sandbox Code Playgroud)

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

  • @ADTC ,您可能已经成为该问题的受害者,即 [[L]](https://httpd.apache.org/docs/2.4/rewrite/flags.html#flag_l) 不是 [[END]](https ://httpd.apache.org/docs/2.4/rewrite/flags.html#flag_end)。-L 停止当前htacess 文件解析,但允许另一轮重定向(从头开始)。因此,大多数情况下,END(暗示 L 和)更好...... (2认同)

Fra*_*cke 5

RewriteRule ^ - [END]

\n\n
    \n
  • .将是不正确的,因为它需要至少 1 个字符
  • \n
  • .* 可以会较低
  • \n
  • L 比 END 更糟糕,因为它允许额外的回合,也在内部重定向上。只有END才真正停止。\xe2\x86\x92详细信息
  • \n
\n