我只是在考虑有人可能会在 URL 中提供 Application.cfc 的场景。我知道这不会起作用,因为它是由 ColdFusion 引擎保留的,用户会看到一个错误。
在这种情况下是否可以重定向用户?
我只是在考虑有人可能会在 URL 中提供 Application.cfc 的场景。我知道这不会起作用,因为它是由 ColdFusion 引擎保留的,用户会看到一个错误。
在这种情况下是否可以重定向用户?
我刚刚使用站点范围的错误处理程序成功捕获了它。这对您来说是一个可行的解决方案吗?
小更新,想通了:
<cftry>
<cfif error.Message EQ "Invalid request of Application.cfm, Application.cfc, or OnRequestEnd.cfm file.">
<cflocation url="#getContextRoot()#/#getDirectoryFromPath(error.Template)#">
</cfif>
<cfcatch>that didn't work</cfcatch>
</cftry>
我认为 CF 在可以抓取错误的位置拦截对 application.cfc、application.cfm 和 onrequestend.cfm 的调用。
我刚刚在我的一个 Coldfusion 开发站点上进行了一些测试,并将 application.cfc 放在定义的 IIS 网站主文件夹之前的父文件夹中,并尝试调用该文件。它为找不到文件返回 404 错误。由于coldfusion 搜索到根文件夹来查找文件,它仍然会找到您的application.cfc 文件,即使它不在IIS 可访问文件夹中。IIS 会将您的 404 错误转为直接请求。
处理您的 404 错误可能是解决方案。
我认为这也是非 Windows 服务器环境的解决方案。