自定义错误页面

AEM附带用于处理HTTP错误的标准错误处理程序;例如,通过显示:

标准错误消息

为响应错误,AEM在/libs/sling/servlet/errorhandler下提供了404.jsp脚本。

小贴士

由于AEM基于Apache Sling,因此Apache错误处理文档中提供了更多信息。

注意

在创作实例上,默认情况下启用CQ WCM调试过滤器。 这始终导致响应代码为200。 默认错误处理程序通过将整个堆栈跟踪写入响应进行响应。

在发布实例上,CQ WCM调试过滤器始终​**​**​处于禁用状态(即使配置为启用)。

如何自定义错误处理程序显示的页面

您可以开发自己的脚本,以在遇到错误时自定义错误处理程序显示的页面。 为此,您将利用AEM标准叠加机制,以便在/apps下创建自定义页面并覆盖/libs下的默认页面。

  1. 在存储库中,复制默认脚本:

    • /libs/sling/servlet/errorhandler/
    • /apps/sling/servlet/errorhandler/

    默认情况下,目标路径不存在,因此您首次执行此操作时需要创建它。

  2. 导航至 /apps/sling/servlet/errorhandler. 您可以在此处:

    • 编辑适当的现有脚本以提供所需的信息。 或者
    • 创建和编辑所需代码的新脚本。
  3. 保存更改并测试。

注意

404.jsp脚本专门设计为适合AEM身份验证;特别是,在出现这些错误时允许系统登录。

因此,替换此脚本应当非常谨慎。

自定义对HTTP 500错误的响应

HTTP 500内部服务器错误表示服务器端错误,如服务器遇到意外情况,导致其无法完成请求。

当请求处理导致异常时,Apache Sling Framework(AEM基于它构建):

  • 记录异常
  • 并在回答中返回:
    • HTTP响应代码500
    • 异常堆栈跟踪

通过自定义错误处理程序显示的页面,可以创建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调试过滤器始终​**​**​处于禁用状态(即使配置为启用)。

On this page

Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now