我在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
答案 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>