为特定 HTTP 状态代码创建自定义错误页面 - Amazon CloudFront
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

为特定 HTTP 状态代码创建自定义错误页面

如果您希望显示自定义错误消息而不是默认消息 – 例如,使用与网站其他部分相同的格式设置的页面 – 则可以让 CloudFront 向查看器返回包含自定义错误消息的对象(例如,HTML 文件)。

要指定您希望返回的文件以及应为此文件返回的错误,请更新您的 CloudFront 分配以指定这些值。有关更多信息,请参阅配置错误响应行为

例如,以下是一个自定义错误页面:

自定义 Amazon 404 页面示例的屏幕截图。

您可以为每个支持的 HTTP 状态代码指定一个不同的对象,也可以对所有支持的状态代码使用同一个对象。您可以选择为一些状态代码指定自定义错误页面,而不为另外一些状态代码指定自定义错误页面。

您通过 CloudFront 提供的对象出于各种原因可能不可用。可将这些原因归为以下两大类:

  • 客户端错误表示请求出现问题。例如,具有指定名称的对象不可用,或用户不具有获取您 Amazon S3 存储桶中的对象所需的权限。当出现客户端错误时,源会向 CloudFront 返回一个 4xx 区间内的 HTTP 状态代码。

  • 服务器错误表示源服务器出现问题。例如,HTTP 服务器繁忙或不可用。当出现服务器错误时,您的源服务器将向 CloudFront 返回一个 5xx 区间内的 HTTP 状态代码,或者在某一时间段内 CloudFront 未从您的源服务器获得响应,此时显示 504 状态代码(网关超时)。

CloudFront 可以为其返回自定义错误页面的 HTTP 状态代码包含以下各项:

  • 400、403、404、405、414、416

  • 500、501、502、503、504

    注意
    • 如果 CloudFront 检测到请求可能不安全,CloudFront 将返回 400(错误请求)错误,而不是自定义错误页面。

    • 您可以为 HTTP 状态代码 416(无法满足请求的范围)创建自定义错误页面,并可以更改源向 CloudFront 返回状态代码 416 时 CloudFront 向查看器返回的 HTTP 状态代码。有关更多信息,请参阅 更改 CloudFront 返回的响应代码。但是,CloudFront 不缓存状态代码 416 响应,因此,即使您为状态代码 416 指定错误缓存最小 TTL 的值,CloudFront 也不会使用它。

    • 在某些情况下,即使您对 CloudFront 进行配置,使其为 HTTP 503 状态代码返回自定义错误页面,CloudFront 也不会执行此操作。如果 CloudFront 错误代码为 Capacity ExceededLimit Exceeded,CloudFront 会将 503 状态代码(而非自定义错误页面)返回至查看器。

    • 如果您创建了自定义错误页面,CloudFront 将针对以下响应代码返回 Connection: closeConnection: keep-alive

      • CloudFront 针对以下状态代码返回 Connection: close:400、405、414、416、500、501

      • CloudFront 针对以下状态代码返回 Connection: keep-alive:403、404、502、503、504

有关 CloudFront 如何处理来自您的源的错误响应的详细说明,请参阅CloudFront 如何处理来自源的 HTTP 4xx 和 5xx 状态代码