自定义错误页面

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

标准错误消息

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

小贴士

由于AEM基于Apache Sling,因此可获取更多信息 中的。

注意

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

在发布实例上,CQ WCM调试过滤器为 always 已禁用(即使配置为已启用)。

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

您可以开发自己的脚本,以在遇到错误时自定义错误处理程序显示的页面。 为此,您将利用 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框架(基于其构建的AEM):

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

自定义错误处理程序显示的页面 a 500.jsp 脚本。 但是,仅在 HttpServletResponse.sendError(500) 显式执行;例如从例外捕手那里。

否则,响应代码将设置为500,但是 500.jsp 脚本。

要处理500错误,错误处理程序脚本的文件名必须与异常类(或超类)相同。 要处理所有此类例外,您可以创建脚本 /apps/sling/servlet/errorhandler/Throwable.jsp/apps/sling/servlet/errorhandler/Exception.jsp.

注意

在AEM作为Cloud Service中,当从后端收到5XX错误时,CDN会提供一个通用错误页面。 为了允许后端的实际响应通过,您需要向响应添加以下标头: x-aem-error-pass: true.
这仅适用于来自AEM或Apache/Dispatcher层的响应。 来自中间基础结构层的其他意外错误仍将显示一般错误页面。

注意

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

对于自定义错误处理程序,需要代码为500的响应 — 因此 需要禁用CQ WCM调试过滤器。 这可确保返回响应代码500,这反过来又触发正确的Sling错误处理程序。

在发布实例上,CQ WCM调试过滤器为 always 已禁用(即使配置为已启用)。

在此页面上