首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IIS7 URL重写包含+字符的URL的中断

IIS7 URL重写包含+字符的URL的中断
EN

Server Fault用户
提问于 2011-07-18 09:01:30
回答 1查看 8.1K关注 0票数 6

我有一个IIS7服务器,它充当其他几个web服务器的反向代理。其他服务器运行在不同的端口上,因此IIS7服务器提供‘友好的URL’,并且所有服务器都在端口80上。URL重写用于将请求传递给后端服务器。

其中一个服务器是TeamCity (持续集成和构建服务器)。此服务器提供了一种下载构建结果(“构建工件”)的方法。通常,这些工件是一个zip归档文件。下面是一个URL示例:

http://build.teamserver.tigranetworks.co.uk/repository/download/bt25/4164:id/ASCOM+Telescope+Driver+for+AWR+6.0.40.825.zip

ASCOM+Telescope+Driver+for+AWR+6.0.40.825.zip中的+字符实际上是最后文件名中的空格;TeamCity服务器放入+字符。

单击此链接时,我从IIS7服务器收到以下错误:

404 -找不到文件或目录。您要查找的资源可能已被删除、名称更改或暂时不可用。

IIS7日志文件中的实际URL是:

/repository/download/bt25/4164:id/ASCOM+Telescope+Driver+for+AWR+6.0.40.825.zip

重写规则匹配模式(.*),并使用

http://localhost:8022/{R:1}

现在有趣的是。如果我回到浏览器并编辑出这些+字符,小心地用空格替换它们,那么URL就能工作了!

我的结论是,URL重写在某种程度上不适用于这些+字符。这是众所周知的问题吗?有什么建议吗?

EN

回答 1

Server Fault用户

回答已采纳

发布于 2011-07-24 07:30:28

“+”符号实际上不是空间的有效URL编码。TeamCity应该将它们编码为%20。

无论哪种方式,错误都可能是请求过滤安全设置中常见的IIS7造成的。

尝试以下命令:

代码语言:javascript
复制
%windir%\system32\inetsrv\appcmd set config /section:requestfiltering /allowdoubleescaping:true

它应该阻止IIS对URL中含有+的任何内容重新选择404's。

票数 3
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/291345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档