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

时间:2016-08-26 19:34:28

标签: url-rewriting sharepoint-2010 iis-7.5

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

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

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

来源网址:

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

目标网址:

/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)

感谢。

1 个答案:

答案 0 :(得分:0)

您需要使用{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>