代码之家  ›  专栏  ›  技术社区  ›  Rob Bell

在匹配的重写秒停止mod重写执行

  •  6
  • Rob Bell  · 技术社区  · 17 年前

    我在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 回复  |  直到 8 年前
        1
  •  9
  •   Community Mohan Dere    9 年前

    我做了类似的事情,以停止在WebDAV文件夹上重写mod u:

    # 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?

        2
  •  1
  •   Zebra North    17 年前

    把它改写成它自己?

    RewriteCond  Host:  (?:www\.)?mysite\.com
    RewriteRule ^(.*)$ $1 [QSA,L]
    
        3
  •  1
  •   Cheeso    16 年前

    我不知道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]标志是表示“不再处理任何规则”的部分,-替换是表示“不再重写”的部分。

        4
  •  0
  •   Frank N dqthe    8 年前

    RewriteRule ^ - [END]

    • . 将不正确,因为它至少需要1个字符
    • .* 能够 效率低下
    • L比END更糟糕,因为它允许额外的回合,也允许内部重定向。只有终点才真正停止。艾斯 Details
    推荐文章