windows2008下iis7伪静态url中有加号或空格不能解析解决办法
最近服务器从iis6换成了iis7,给网站做rewrite伪静态的时候,发现以前做的空格和加号竟然不行了,找了下资料,解决方法如下:
错误提示:iis7.0请求筛选模块被配置为拒绝包含双重转义序列的请求
要解决此问题,请请按照下列步骤操作。
请注意 按照这些步骤后,在运行 IIS 的服务器的安全级别可能会降低。 因此,将 allowDoubleEscaping 属性设置为 True 之前,请考虑所涉及的风险。
单击 开始 ,在 开始搜索 框中键入 记事本 右键单击 程序 列表中的 记事本 ,然后单击 以管理员身份运行 。 如果将提示您输入管理员密码或进行确认,键入您的密码,或单击 继续 。
在 文件 菜单上单击 打开 ,在 文件名 框中键入 %windir%\System32\inetsrv\config\applicationHost.config 然后再单击 打开 。
在该 ApplicationHost.config 文件找到 requestFiltering XML 元素。
为 True ,请更改该 allowDoubleEscaping 属性的值。 为此,请使用类似下面的示例代码的代码
<requestFiltering allowDoubleEscaping="true">
在 文件 菜单中上, 单击 保存 。
退出记事本。
重要 当启用双转义的序列时,在运行 IIS 的服务器的安全级别可能会降低。在前面的步骤将直接编辑 applicationHost.config 文件的并在服务器级别配置此设置中。 若要配置此设置,也可以使用 appcmd 命令。 要这样做,请按下列步骤操作:
单击 开始 ,单击 运行 ,然后键入在 打开 框中的 cmd 。
键入下面的命令,然后按 Enter 键:
C: CD %windir%\system32\inetsrv
运行下列命令之一:
Appcmd set config "Default Web Site" /section:system.webServer/Security/requestFiltering -allowDoubleEscaping:True
请注意 这将配置设置" Web 站点"的根文件夹中 Web.config 文件。appcmd set config "站点名称" /section:system.webServer/Security/requestFiltering -allowDoubleEscaping:True /commit:appHost
请注意 这将为配置此设置仅"默认 Web 站点"applicationHost.config 文件中使用位置标记view sourceprint
<system.webServer>
<security>
<requestFiltering allowDoubleEscaping="true"></requestFiltering>
</security>
</system.webServer>
解决方法:
[windows2008 iis7].net伪静态url中有空格或加号不能运行的解决方法
在iis7下,url中包含空格的伪静态,将不能正常访问,比如:http://www.zhaoxi.net/list0-1-0-0-0--%E6%B7%98%E5%AE%9D+%E5%BA%97%E6%A0%87.htm
会出现请求筛选模块被配置为拒绝包含双重转义序列的请求。HTTP 错误 404.11 – Not Found
解决方法如下:
1、在地址栏输入: %windir%\system32\inetsrv\config\applicationhost.config然后单击 打开 。
2、在 ApplicationHost.config 文件, 定位到文件中的 configuration/system.webServer/security/requestFiltering/下
<requestFiltering> 节点。大约360行
将<requestFiltering>
改为
<requestFiltering allowDoubleEscaping="true">
即可
或者在网站的web.config里修改或添加该节点,效果一样。
<configuration>
<system.webServer>
<security>
<requestFiltering allowDoubleEscaping=”true”></requestFiltering>
</security>
</system.webServer>
</configuration>