在 IIS 中用大括号围绕查询字符串值重写 URL

Rewrite a URL with curly brackets around a query string value in IIS

如何使用 IIS 替换 URL 的查询字符串值? 我想要做的就是将 ListId 中的值从旧值更改为新值。

ListId值:7898D8D3-7FDC-427C-B81D-AE95ADA03F07

新建 ListId 值:32992B8E-905E-47CA-BAB2-846D3E5D399F

来源URL:

/sites/techopskb/_layouts/listform.aspx?PageType=4&ListId={7898D8D3-7FDC-427C-B81D-AE95ADA03F07}&ID=5859&ContentTypeID=0x0100D98D0B04DDCDF84C872D58FFE6AA6B84

目标 URL:

/sites/techopskb/_layouts/listform.aspx?PageType=4&ListId={32992B8E-905E-47CA-BAB2-846D3E5D399F}&ID=7537&ContentTypeID=0x0100D98D0B04DDCDF84C872D58FFE6AA6B84

花括号让我头疼。我试过表达式中的 %7B%7D,但 IIS 不喜欢它。 (顺便说一句-这是一个 SharePoint 2010 网站,IIS v7.5)

谢谢。

您需要使用 {UrlDecode:%7B} 。 See here

因此您的重写规则将如下所示

<rule name="ModifyQueryString" stopProcessing="true">
    <match url="(.*)" />
    <conditions>
        <add input="{QUERY_STRING}" pattern="(.*)listid=\{7898D8D3-7FDC-427C-B81D-AE95ADA03F07\}(.*)" />
    </conditions>
    <action type="Redirect" url="http://example.com/sites/techopskb/_layouts/listform.aspx?{C:1}&amp;listid={UrlDecode:%7B}32992B8E-905E-47CA-BAB2-846D3E5D399F{UrlDecode:%7D}{C:2}" appendQueryString="false" />
</rule>