是否有IIS设置来删除请求的URL中的额外“/”字符?

时间:2008-10-17 17:53:58

标签: internet-explorer iis caching url-rewriting

一般问题:

我们有网址来到我们的IIS网络服务器,格式如下:

  

http://www.server.com/page.aspx

我们也看到这样的网址出现了:

  

http://www.server.com//page.aspx

我们希望摆脱那个额外的路径字符,因为当用户代理是Internet Explorer时,它会解析为2个不同的页面,因此,当应该从缓存中解析内容时,下载内容两次。

我不确定这是否是一个像url-rewriting模块一样的问题,或者是否有配置设置。

2 个答案:

答案 0 :(得分:0)

我认为问题出在IE上,而不是IIS。

网址重写通常是指在服务器上将网址从http://example/shoes/clarkes映射到http://example/shoes.aspx?maker=clarkes的过程,以便浏览器不知道它。

您需要做的是使用301 Http response code将浏览器从http://www.server.com//page.aspx重定向到http://www.server.com/page.aspx

理论上:

当你似乎使用ASP.NET时,最透明的方法是编写一个HttpModule来检查请求的URI中的双斜杠并进行重定向。

最简单的方法是在Global.ascx。(cs | vb)中放入一些代码来检查BeginRequest上请求的URI。

无论哪种方式,执行检查的代码都是相同的。

在实践中:

可能是IIS或ASP.NET在您有机会看到之前吞下了双“/”。如果它是IIS,那么您可能必须在IIS前面使用代理。 如果它是ASP.NET,那么您可以找到一个能为您完成工作的ISAPI Extension

其他选项

你可以

  • 拆分页面,以便可以将大部分单个资源与html内容分开缓存
  • 告知用户他们不需要添加额外的斜杠。

答案 1 :(得分:0)

修复链接!

您很可能会看到双斜杠,因为您在自己的网站上有错误的链接,无论是硬编码还是脚本生成。在连接http://example.com/ + /page.aspx的脚本中,错误地执行此操作很容易。密切关注那些类型的连接!

IIS清除了额外的斜杠,因此任何ASP.NET代码或HttpModule都无法解决这个问题。额外的斜杠甚至不会进入IIS日志文件。我使用IIS7和telnet进行了测试,无法在日志或ASP.NET中获得额外的斜杠。

我不确定为什么原始问题似乎只涉及IE。 IE和FF都允许在URL中使用额外的斜杠并且似乎传输它们,但我没有使用数据包嗅探来验证。