IIS中的双重转义和URL重写

IIS中的双重转义和URL重写,iis,url-rewriting,coldfusion,iis-7.5,Iis,Url Rewriting,Coldfusion,Iis 7.5,我有一个URL(自动生成),路径中有加号(+),我得到了404 我搜索了一会儿,发现我们可以使用以下方法启用双重编码: <security> <requestFiltering allowDoubleEscaping="true" /> </security> 我面临的问题是该URL的重写规则,在捕获的组中,加号被空格替换: <rule name="Test Page Rewrite" stopProcessing="true">

我有一个URL(自动生成),路径中有加号(+),我得到了404

我搜索了一会儿,发现我们可以使用以下方法启用双重编码:

<security>
  <requestFiltering allowDoubleEscaping="true" />
</security>

我面临的问题是该URL的重写规则,在捕获的组中,加号被空格替换:

<rule name="Test Page Rewrite" stopProcessing="true">
    <match url="^test/([\-a-z0-9_.+]+)$" ignoreCase="true" />
    <conditions>
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
    </conditions>
    <action type="Rewrite" url="test/index.cfm?p1={R:1}" />
</rule>

e、 g。, 对于URL:/test/test+page

页面上可用的URL参数是
p1:testpage


是否有任何解决方法可用于从请求的URL中捕获,以便URL参数
p1
的值为
test+page
(原始)?

您可以使用
UrlEncode
功能。此规则适用于您:

<rule name="Test Page Rewrite" stopProcessing="true">
    <match url="^test/([\-a-z0-9_.+]+)$" ignoreCase="true" />
    <conditions>
        <add input="{REQUEST_URI}" pattern="^/test/index.cfm" negate="true" />
    </conditions>
    <action type="Rewrite" url="test/index.cfm?p1={UrlEncode:{R:1}}" />
</rule>

您需要更改规则以允许使用“+”。这个替换在它到达CF服务器之前很久就已经发生了。我已经在模式
^test/([\-a-z0-9.+]+)$”中允许了“+”
。你是说别的吗?