URL重写以删除文件扩展名导致页面永远不会完全加载

vol*_*one 0 coldfusion iis-7 url-rewriting url-rewrite-module

我编写了简单的重写规则,重写.cfm扩展链接(使用出站规则),并使用等效的入站规则解析为完整的.cfm路径.例:

此出站链接:

http://mysite/section/page

解决了这个完整的路径:

http://mysite/section/page.cfm

当我访问没有文件扩展名的链接时,在任何浏览器中,页面都显示在屏幕上,但浏览器似乎仍在等待页面完成加载(在浏览器选项卡中获取旋转的圆圈,而Firefox则说"转移"来自mywebsite的数据...")

在"等待"加载页面大约5分钟后,浏览器将停止尝试加载并显示"无法显示页面"错误.我使用Firebug的NET面板来查看最新情况,基本上页面永远不会完成加载(文件大小保持0kb直到浏览器崩溃).

如果我转到一个完全限定的路径页面,http://mysite/section/page.cfm那么页面会在大约20ms内完全加载,Firebug会给我页面的大小.

任何人都可以建议发生什么事情以及如何解决它?

vol*_*one 5

好吧,我有点解决了它,或者实际解决了它.

这是一个ColdFusion问题.如果其他人如果面对这里就是你做的:

  1. 创建Application.cfc页面.
  2. 将此功能添加到您的组件:
<cffunction name="onRequestEnd">
    <cfheader name="Content-Length" value="#Len(getPageContext().getOut().getString())#" />
    <cfset getPageContext().flush()>
</cffunction>


所以这里发生的是我们将Content-Length标头设置为正确的大小,因为如果你让它自己做的话,ColdFusion会把它搞乱.结束永无止境的页面加载的方法是将getPageContext().flush()After-setting设置为Content-Length,以便浏览器获取所有页面内容.

坦率地说,我使用谷歌搜索和随机黑客工作.它可能不是解决问题的正确方法(因为在Firebug中它表示存在500错误)但它似乎有效.