我知道CF 10有许多围绕404处理的问题。这似乎与其他报道不同。详细说明:
404.cfm非常简单:
<cfheader
statuscode="404"
statustext="Not Found">
<h1>404</h1><p>Page not found</p>
<cfoutput>#now()#</cfoutput>
输入错误的网址[domain] /foo.cfm应显示上述模板。相反,我得到一个IIS错误屏幕。忽略CF缺失模板处理程序。 IIS失败的请求跟踪表明URL是
http://[mydomain]:80/jakarta/isapi_redirect.dll
并在步骤1显示详细视图
RequestURL="http://[mydomain]:80/foo.cfm
我已经看到围绕CF10和404的很多问题,但从来没有完全忽略丢失的模板处理程序分配。在CF9中,这将按预期生成输出。有人见过这样的事吗?
修改
我也试过配置这个以匹配我运行的不同CF9服务器:添加了CF映射到站点的Web根目录。然后将丢失的模板处理程序放在网站的根目录而不是CF默认的Web根目录中,最后在cfadmin中使用映射文件夹指向网站根目录中缺少的模板处理程序。同样的问题。在CF9中工作正常,完全不使用CF10。
EDIT2:
正如Miguel F在评论中指出的那样,你可以在CF Admin中关闭HTML错误代码,这将让Missing Template Handler触发...但是你得到一个200标题。显然cfheader语句被忽略,因为我已经尝试将cfheader放在模板的开头和结尾...仍然产生200.视觉上很好但是因为SEO关注这是一场灾难。刚查看,我的CF9服务器不需要取消选中此设置,以便他们的处理程序能够正常工作。
EDIT3
Dana Kowalski的解决方案向公众显示详细的IIS错误,因此对于404,例如,一个虚拟扩展(foo.xyz),屏幕将显示文件路径。默认行为是不显示详细错误,除非在本地运行模板,并向访问者显示自定义错误页面。 CF错误模板应该可以正常使用该设置。
可能的解决方案
作为调试此问题的一部分,我退回到ColdFusion 9,并在调试单独的相关问题时调回may have discovered the solution。
答案 0 :(得分:0)
在IIS管理器中,单击相关站点。选择“错误页面”选项。选择右侧的“编辑功能设置”链接。检查是否选择了“详细错误”选项。
如果您选择了其他两个中的任何一个,有时IIS 7.x将接管并且不让ColdFusion处理它。