我在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]
...
答案 0 :(得分:9)
我做了类似的事情,在WebDAV文件夹上停止mod_rewrite:
# stop processing if we're in the webdav folder
RewriteCond %{REQUEST_URI} ^/webdav [NC]
RewriteRule .* - [L]
这也适用于您的目的。如果没有,或者您对其他参考文献感兴趣,请参阅上一个问题:How do I ignore a directory in mod_rewrite?
答案 1 :(得分:1)
将其重写为自己?
RewriteCond Host: (?:www\.)?mysite\.com
RewriteRule ^(.*)$ $1 [QSA,L]
答案 2 :(得分:1)
我不知道ISAPI重写语法,但在IIRF上,“突破”规则是这样的:
## 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]标志是表示“不再处理任何规则”的部分,而 - 替换是表示“不重写”的部分。
答案 3 :(得分:0)
RewriteRule ^ - [END]
.
不正确,因为它至少需要1个字符.*
可能效率低下恕我直言