1

一般问题:

我们的 IIS Web 服务器的 URL 格式如下:

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

我们也看到像这样的网址进来了:

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

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

我不确定这是否是一个需要通过 url 重写模块之类的东西来解决的问题,或者是否有配置设置。

4

2 回答 2

0

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

Url Rewriting通常是指将URL从服务器映射http://example/shoes/clarkeshttp://example/shoes.aspx?maker=clarkes服务器的过程,以便浏览器不知道它。

您需要做的是将浏览器从重定向http://www.server.com//page.aspxhttp://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 扩展来为您完成这项工作。

其他选项

你也可以

  • 拆分页面,以便可以将大部分单独的资源与 html 内容分开缓存
  • 教育用户他们不需要添加额外的斜线。
于 2008-10-17T19:15:34.560 回答
0

修复您的链接!

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

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

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

于 2012-01-24T01:18:31.150 回答