IIS URL重写-操作URL中的多个条件反向引用

IIS URL重写-操作URL中的多个条件反向引用,iis,url-rewriting,Iis,Url Rewriting,试图使用URLEWRITE设置一些重定向,但保留了源UR中的一些查询字符串参数(并且仅保留了一些),但遇到了一些问题 基本上,我需要保留Google Analytics UTM参数并将其移动到操作URL。以下是配置部分或我的重定向之一: <rule name="Anything Else" patternSyntax="ECMAScript" stopProcessing="true"> <match url=".*" />

试图使用URLEWRITE设置一些重定向,但保留了源UR中的一些查询字符串参数(并且仅保留了一些),但遇到了一些问题

基本上,我需要保留Google Analytics UTM参数并将其移动到操作URL。以下是配置部分或我的重定向之一:

        <rule name="Anything Else" patternSyntax="ECMAScript" stopProcessing="true">
            <match url=".*" />
            <conditions logicalGrouping="MatchAny" trackAllCaptures="true">
                <add input="{QUERY_STRING}" pattern="utm_source=(\w+)" />
                <add input="{QUERY_STRING}" pattern="utm_medium=(\w+)" />
                <add input="{QUERY_STRING}" pattern="utm_campaign=(\w+)" />
                <add input="{QUERY_STRING}" pattern="utm_term=(\w+)" />
                <add input="{QUERY_STRING}" pattern="utm_content=(\w+)" />
                <add input="{QUERY_STRING}" pattern=".*" />
            </conditions>
            <action type="Redirect" url="https://www.google.com?utm_source={C:1}&amp;utm_medium={C:2}" appendQueryString="false" redirectType="Temporary" />
        </rule>

无法展开“{C:2}”


我是不是选错了树了?这可能吗?我可以选择编码一个HTTPHandler并在那里进行转换,但我希望这样做不会向服务器引入自定义代码。

在规则操作中,您可以使用该规则最后匹配条件的反向引用。也可以在条件输入strin中g、 您可以使用对先前匹配条件的反向引用

考虑到这一点,一种可能的方法是在下一个条件的输入中使用上一个条件的反向引用:

<conditions>
    <add input="{QUERY_STRING}" pattern="(?:^|&amp;)var1=([1-9]\d+)(?:&amp;|$)" />
    <add input="%{C:1}%_{QUERY_STRING}" pattern="%(.+)%_.*var2=([1-9]\d+)(?:&|$)" />
</conditions>

然后规则的操作将如下所示:

<action type="Redirect" url="newpage.aspx/{C:1}/{C:2}" appendQueryString="false" redirectType="Permanent" />