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

Capture part of URL to use in Outbound rule for rewrite module in IIS

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

现在,我正在使用一个先决条件,其中我有一个针对 {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} 是前提条件 "myapp(.*)"

中的捕获组

所以,它会从 http://myapp40.com 将响应中的链接重写为类似于 40/originalrelativelink

谢谢!

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

规则类似于:

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