

# 为特定 HTTP 状态代码创建自定义错误页面
<a name="creating-custom-error-pages"></a>

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

要指定您希望返回的文件以及应为此文件返回的错误，请更新您的 CloudFront 分配以指定这些值。有关更多信息，请参阅[配置错误响应行为](custom-error-pages-procedure.md)。

例如，以下是一个自定义错误页面：

![\[自定义 AWS 404 页面示例的屏幕截图。\]](http://docs.aws.amazon.com/zh_cn/AmazonCloudFront/latest/DeveloperGuide/images/custom-error-page-aws-404-example.png)


您可以为每个支持的 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 返回的响应代码](custom-error-pages-response-code.md)。但是，CloudFront 不缓存状态代码 416 响应，因此，即使您为状态代码 416 指定**错误缓存最小 TTL** 的值，CloudFront 也不会使用它。
在某些情况下，即使您对 CloudFront 进行配置，使其为 HTTP 503 状态代码返回自定义错误页面，CloudFront 也不会执行此操作。如果 CloudFront 错误代码为 `Capacity Exceeded` 或 `Limit Exceeded`，CloudFront 会将 503 状态代码（而非自定义错误页面）返回至查看器。
如果您创建了自定义错误页面，CloudFront 将针对以下响应代码返回 `Connection: close` 或 `Connection: 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 状态代码](HTTPStatusCodes.md)。