有关 IIS 重写规则的帮助

有关 IIS 重写规则的帮助

我需要创建如下重写规则:

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 时,模式应用于路径部分,而查询字符串必须单独匹配。

相关内容