在IIS中重定向时如何从URL获取多个查询字符串?

时间:2019-05-01 11:43:08

标签: iis url-rewriting

我在IIS上添加了一些URL重写规则,因此它将旧URL重定向到新位置。

当URL仅具有一个查询字符串参数时它起作用,但是如果我有多个,则不起作用。有什么我可以做的,所以我可以获取第二个参数(如果存在),而不仅仅是获取第一个?

这是我的web.config规则。

<rule name="Rewrite rule1 for viewtopic.php" stopProcessing="true">
   <match url="^.*(?:viewtopic.php).*$.*" />
   <conditions>
     <add input="{QUERY_STRING}" pattern="^t=/name=([0-9]*)/" />
   </conditions>
   <action type="Redirect" url="https://example.com/view/{C:1}/topic" appendQueryString="false" redirectType="SeeOther" />
</rule>

如果我的网址是这样,该规则将起作用。 https://example.com/viewtopic.php?t=123456

现在我确实有一些旧的网址,其格式为https://example.com/viewtopic.php?t=123456&highlight=Welcome

在这种情况下,当IIS规则运行时,它将为我提供以下重定向URL https://example.com/view/123456&highlight=Welcome/topic,而我正在尝试使网址像这样:https://example.com/view/123456/topic

1 个答案:

答案 0 :(得分:1)

根据您的描述,建议您尝试使用以下url重写规则。

它将仅与第一个查询字符串值匹配。

            <rule name="MultipleQueryStringRule" stopProcessing="true">
                <match url="^.*(?:viewtopic.php).*$.*" />
                <conditions>
                    <add input="{QUERY_STRING}" pattern="^t=([0-9a-zA-Z]*)" />
                </conditions>
                <action type="Redirect" url="https://example.com/view/{C:1}/topic" appendQueryString="false" />
            </rule>