AEM附带用于处理HTTP错误的标准错误处理程序;例如,通过显示:
为响应错误,AEM在/libs/sling/servlet/errorhandler
下提供了404.jsp
脚本。
由于AEM基于Apache Sling,因此Apache错误处理文档中提供了更多信息。
在创作实例上,默认情况下启用CQ WCM调试过滤器。 这始终导致响应代码为200。 默认错误处理程序通过将整个堆栈跟踪写入响应进行响应。
在发布实例上,CQ WCM调试过滤器始终****处于禁用状态(即使配置为启用)。
您可以开发自己的脚本,以在遇到错误时自定义错误处理程序显示的页面。 为此,您将利用AEM标准叠加机制,以便在/apps
下创建自定义页面并覆盖/libs
下的默认页面。
在存储库中,复制默认脚本:
/libs/sling/servlet/errorhandler/
/apps/sling/servlet/errorhandler/
默认情况下,目标路径不存在,因此您首次执行此操作时需要创建它。
导航至 /apps/sling/servlet/errorhandler
. 您可以在此处:
保存更改并测试。
404.jsp
脚本专门设计为适合AEM身份验证;特别是,在出现这些错误时允许系统登录。
因此,替换此脚本应当非常谨慎。
HTTP 500内部服务器错误表示服务器端错误,如服务器遇到意外情况,导致其无法完成请求。
当请求处理导致异常时,Apache Sling Framework(AEM基于它构建):
通过自定义错误处理程序显示的页面,可以创建500.jsp
脚本。 但是,仅当显式执行HttpServletResponse.sendError(500)
时才使用它;例如从例外捕手那里。
否则,响应代码设置为500,但不执行500.jsp
脚本。
要处理500个错误,错误处理程序脚本的文件名必须与异常类(或超类)相同。 要处理所有此类异常,可创建脚本/apps/sling/servlet/errorhandler/Throwable.jsp
或/apps/sling/servlet/errorhandler/Exception.jsp
。
在创作实例上,默认情况下启用CQ WCM调试过滤器。 这始终导致响应代码为200。 默认错误处理程序通过将整个堆栈跟踪写入响应进行响应。
对于自定义错误处理程序,需要代码为500的响应——因此需要禁用CQ WCM调试过滤器。 这确保返回响应代码500,这反过来又触发正确的Sling错误处理程序。
在发布实例上,CQ WCM调试过滤器始终****处于禁用状态(即使配置为启用)。