在IIS

时间:2017-06-14 09:16:53

标签: iis url-rewriting coldfusion iis-7.5

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

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

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

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

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

如, 对于网址:/ test / test + page

页面上提供的网址参数为p1: test page

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

1 个答案:

答案 0 :(得分:0)

您可以使用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>