我有一个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
(原始)?
答案 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>