【问题标题】:IIS redirect rule priorityIIS 重定向规则优先级
【发布时间】:2013-09-21 00:37:22
【问题描述】:

如果我在我的 Web.config 文件中使用 httpRedirectrewrite,我如何指定哪个规则优先?

例如,假设我有一个通用的 catch all 规则,例如 wildcard="*",但也有一个 wildcard="/news" destination="/new/news",似乎只执行了 wildcard="*" 规则。

可以从 Apache 获得这样的行为;我想在 IIS 中一定有办法。

【问题讨论】:

    标签: .net http iis redirect


    【解决方案1】:

    优先级与它们指定的顺序相同。IIS 管理器有一个“上移”和“下移”按钮,可以为您重新排序。

    例如:

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
    <system.webServer>
    <rewrite>
        <rules>
            <rule name="Rule1" stopProcessing="true">
                <match url="^foo/?bar=123"/>
                <action type="Rewrite" url="foo.aspx?bar=special" appendQueryString="false" />
            </rule>
            <rule name="Rule2" stopProcessing="true">
                <match url="^foo/?bar=([A-z0-9]+)"/>
                <action type="Rewrite" url="foo.aspx?bar={R:1}" appendQueryString="false" />
            </rule>
            <rule name="Rule3" stopProcessing="true">
                <match url="^foo/"/>
                <action type="Rewrite" url="somethingElse.aspx" appendQueryString="false" />
            </rule>
        </rules>
    </rewrite>
    </system.webServer>
    </configuration>
    

    考虑对/foo?bar=123 的传入请求。

    在这个例子中,因为Rule1是第一个,这意味着请求将被重写为foo.aspx?bar=special而不是foo.aspx?bar=123,即使它同时匹配Rule1Rule2Rule3

    stopProcessing="true" 属性确保不执行其他匹配规则(即Rule2Rule3)。

    来源:http://www.iis.net/learn/extensions/url-rewrite-module/url-rewrite-module-configuration-reference#Rules_Evaluation

    IIS 中的每个配置级别都可以定义零个或多个重写规则。 规则的评估顺序与它们指定的顺序相同。 URL 重写模块使用以下算法处理规则集:

    1. 首先,将 URL 与规则模式进行匹配。如果不匹配,URL 重写模块立即停止处理该规则,并继续处理下一条规则。
    2. 如果一个模式匹配并且该规则没有条件,则 URL 重写模块执行为该规则指定的操作,然后继续执行下一条规则,在该规则中它使用替换的 URL 作为该规则的输入。
    3. 如果模式匹配并且规则存在条件,则 URL 重写模块会评估条件。如果评估成功,则执行指定的规则动作,然后将重写后的 URL 作为后续规则的输入

    【讨论】:

    • 您能在 web.config 文件的上下文中解释一下吗?我对gui一无所知。
    【解决方案2】:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-25
      • 2012-10-13
      • 1970-01-01
      • 2019-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-08
      相关资源
      最近更新 更多