捕获部分URL以在IIS中的重写模块的出站规则中使用

时间:2015-06-09 22:58:04

标签: iis url-rewriting url-rewrite-module outbound preconditions

有没有办法捕获出站规则中的部分网址以用作重写的值?

现在,我正在使用一个前提条件,其中我有一个带有{REQUEST_URI}模式的输入。我想在使用此前提条件的出站规则中使用请求URI中的捕获组。我试过{C:1},但那不起作用。

前提条件:

<preCondition name="Html Response" logicalGrouping="MatchAll">
    <add input="{REQUEST_URI}" pattern="myapp(.*)" />
    <add input="{RESPONSE_CONTENT_TYPE}" pattern="^(text/html)" />
</preCondition>

出站规则:

<rule name="ResponseRewriteRelative" preCondition="Html Response" stopProcessing="true">
    <match filterByTags="A, Link" pattern="^/(.*)" />
    <action type="Rewrite" value="{C:1}/{R:1}" />
</rule>

其中{C:1}将是前提条件下的捕获组&#34; myapp(。*)&#34;

所以,它来自 http://myapp40.com 在响应中重写链接类似于 40 / originalrelativelink

谢谢!

1 个答案:

答案 0 :(得分:1)

我刚刚发现您可以在出站规则本身添加条件。只是回答这里,以防有任何其他无知的人在努力改写重写规则:)

规则看起来像:

<rule name="ResponseRewriteRelative" preCondition="Html Response" stopProcessing="true">
    <match filterByTags="A, Link" pattern="^/(.*)" />
    <action type="Rewrite" value="{C:1}/{R:1}" />
    <conditions>
        <add input="{REQUEST_URI}" pattern="myapp(.*)" />
    </conditions>
</rule>