禁用IIS7 URL重写每个站点的继承?

时间:2011-08-04 17:33:31

标签: iis-7 url-rewriting

我有许多全局IIS7 URL重写规则,默认情况下它们适用于所有网站。好吧有几个网站,我想为所有规则禁用此重写继承。我怎样才能做到这一点?我没有高兴地尝试了以下内容:

 <rewrite>
<rules>
    <clear />
</rules>
  </rewrite>

2 个答案:

答案 0 :(得分:4)

抱歉,无法做到:

  

全局重写规则用于定义服务器范围的URL重写   逻辑。这些规则在 applicationHost.config 文件中定义   并且在任何较低配置下都无法覆盖或禁用   级别,例如站点或虚拟目录。全球规则永远   操作绝对URL路径(即没有的请求URI   服务器名称)。

  

始终首先评估全局规则集,然后分发全局规则集   将使用global生成的URL字符串评估规则集   规则集。

http://learn.iis.net/page.aspx/468/using-global-and-distributed-rewrite-rules/

答案 1 :(得分:0)

如果您能够将全局规则中所需的功能移动到站点的web.config中,则可以在每个规则上添加条件,以选择加入或退出每个规则,具体取决于该站点的本地文件的存在。这将允许您部署一组通用的代码和配置,但使用本地/每站点自定义。

选择加入规则的示例:

        <rule name="HTTP to HTTPS Redirect" stopProcessing="true">
            <match url="(.*)" />
            <conditions logicalGrouping="MatchAll">
                <add input="{HTTPS}" pattern="off" />
                <!-- Opt-in to rule via presense of a local file -->
                <add input="{DOCUMENT_ROOT}/Local/rewrite-rule-enable-https.txt" matchType="IsFile" />
            </conditions>
            <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" />
        </rule>

注意:未部署Local文件夹,而是用于存储每个站点的文件。

基本上,除非在网站上的/ Local文件夹中找到名为“rewrite-rule-enable-https.txt”的文件,否则此规则无法启用。