ColdFusion 10 Update 11 404处理程序未触发

时间:2013-09-18 18:33:53

标签: iis coldfusion coldfusion-10

我知道CF 10有许多围绕404处理的问题。这似乎与其他报道不同。详细说明:

  • Win2k8 R2 / 64和IIS7.5
  • 从单独服务器上的相同配置升级。唯一的区别是CF9 - > CF 10.所有在CF9上都能正常工作。在原始服务器上实施了Adobe CF9 Lockdown,在此服务器上实现了CF10 Lockdown。
  • 缺少模板处理程序在CF Admin中设置为/404.cfm,它应转换为Cfusion根目录(c:\ ColdFusion10 \ cfusion \ wwwroot)。
  • IIS已配置为跟踪失败的404请求
  • IIS 404处理是默认的(最初执行CF URL但已移除以简化调试)。
  • 缺少模板处理程序所在的Coldfusion webroot是默认安装位置
  • IIS站点根目录完全不同:c:\ Other \ Place \ SiteRoot \
  • 同一个ColdFusion webroot中的CF Admin中也设置了一个全站点错误处理程序,并按预期工作。

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

1 个答案:

答案 0 :(得分:0)

在IIS管理器中,单击相关站点。选择“错误页面”选项。选择右侧的“编辑功能设置”链接。检查是否选择了“详细错误”选项。

如果您选择了其他两个中的任何一个,有时IIS 7.x将接管并且不让ColdFusion处理它。