一般问题:
我们的 IIS Web 服务器的 URL 格式如下:
我们也看到像这样的网址进来了:
我们想去掉那个额外的路径字符,因为当用户代理是 Internet Explorer 时,这会解析为 2 个不同的页面,因此,当内容应该从缓存中解析时,它会下载两次。
我不确定这是否是一个需要通过 url 重写模块之类的东西来解决的问题,或者是否有配置设置。
一般问题:
我们的 IIS Web 服务器的 URL 格式如下:
我们也看到像这样的网址进来了:
我们想去掉那个额外的路径字符,因为当用户代理是 Internet Explorer 时,这会解析为 2 个不同的页面,因此,当内容应该从缓存中解析时,它会下载两次。
我不确定这是否是一个需要通过 url 重写模块之类的东西来解决的问题,或者是否有配置设置。
我认为问题出在 IE 而不是 IIS 上。
Url Rewriting通常是指将URL从服务器映射http://example/shoes/clarkes
到http://example/shoes.aspx?maker=clarkes
服务器的过程,以便浏览器不知道它。
您需要做的是将浏览器从重定向http://www.server.com//page.aspx
到http://www.server.com/page.aspx
使用301 Http 响应代码。
由于您似乎正在使用 ASP.NET,因此最透明的方法是编写一个HttpModule来检查请求的 URI 中的双斜杠并进行重定向。
最简单的方法是在 Global.ascx.(cs|vb) 中放入一些代码来检查BeginRequest上请求的 URI 。
无论哪种方式,进行检查的代码都是相同的。
可能是 IIS 或 ASP.NET 在您有机会看到它之前就吞下了双“/”。如果是 IIS,那么您可能必须在 IIS 前使用代理。如果它是 ASP.NET,那么您可能会找到一个ISAPI 扩展来为您完成这项工作。
你也可以
您看到双斜线的可能性很大,因为您自己的网站上有错误的链接,无论是硬编码的还是脚本生成的。http://example.com/
在连接+的脚本中很容易错误地执行此操作/page.aspx
。密切注意这些类型的连接!
IIS 清除了多余的斜线,因此无法使用任何 ASP.NET 代码或 HttpModule 来解决此问题。额外的斜杠甚至不会进入 IIS 日志文件。我使用 IIS7 和 telnet 进行了测试,无法在日志或 ASP.NET 中添加额外的斜线。
我不确定为什么最初的问题似乎只涉及 IE。IE 和 FF 都允许在 URL 中使用额外的斜杠,并且似乎可以传输它们,尽管我没有使用数据包嗅探来验证。