【问题标题】:Disable IIS7 URL Rewrite inheritance on a per site basis?在每个站点的基础上禁用 IIS7 URL 重写继承?
【发布时间】:2011-10-20 05:32:53
【问题描述】:

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

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

【问题讨论】:

    标签: iis-7 url-rewriting


    【解决方案1】:

    如果您能够将您需要的功能从全局规则中移到您网站的 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 文件夹中找到名为“rewrite-rule-enable-https.txt”的文件,否则该规则基本上不会启用。

    【讨论】:

      【解决方案2】:

      对不起,这不能做:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-05-03
        • 1970-01-01
        • 1970-01-01
        • 2012-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-22
        • 2012-10-16
        相关资源
        最近更新 更多