我需要创建如下重写规则:
OldPage.aspx?UserId=12345 应重定向到 NewPage.aspx?Id=12345
‘12345’ 可以是任意数值。)
我已经使页面重定向正常工作,但不确定如何将“UserId”更改为“Id”(我可以在我的代码中执行此操作,但更愿意在 web.config 中执行此操作)。
这就是我所拥有的:
<rewrite>
<rules>
<rule name="Old Site to New" patternSyntax="Wildcard" stopProcessing="true">
<match url="*OldPage.aspx*" />
<action type="Rewrite" url="NewPage.aspx" appendQueryString="true" logRewrittenUrl="true" />
</rule>
</rules>
</rewrite>
我正在使用通配符,但我同意使用正则表达式或通配符的建议。
答案1
这应该根据您的 URL 示例完成工作:
<rule name="Old2New">
<match url="^OldPage\.aspx$" />
<conditions>
<add input="{QUERY_STRING}" pattern="UserId=(\d+)" />
</conditions>
<action type="Rewrite" url="NewPage.aspx?Id={C:1}" appendQueryString="false" />
</rule>
许多人常犯的一个错误是尝试匹配包括查询字符串在内的整个 URL。实际情况是:匹配 URL 时,模式应用于路径部分,而查询字符串必须单独匹配。