一般问题:
我们有网址来到我们的IIS网络服务器,格式如下:
我们也看到这样的网址出现了:
我们希望摆脱那个额外的路径字符,因为当用户代理是Internet Explorer时,它会解析为2个不同的页面,因此,当应该从缓存中解析内容时,下载内容两次。
我不确定这是否是一个像url-rewriting模块一样的问题,或者是否有配置设置。
答案 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。
你可以
答案 1 :(得分:0)
您很可能会看到双斜杠,因为您在自己的网站上有错误的链接,无论是硬编码还是脚本生成。在连接http://example.com/
+ /page.aspx
的脚本中,错误地执行此操作很容易。密切关注那些类型的连接!
IIS清除了额外的斜杠,因此任何ASP.NET代码或HttpModule都无法解决这个问题。额外的斜杠甚至不会进入IIS日志文件。我使用IIS7和telnet进行了测试,无法在日志或ASP.NET中获得额外的斜杠。
我不确定为什么原始问题似乎只涉及IE。 IE和FF都允许在URL中使用额外的斜杠并且似乎传输它们,但我没有使用数据包嗅探来验证。