使用自定义错误(Custom Errors)可将默认的 Cloudflare 错误页面替换为您自己的自定义内容。当发生 HTTP 错误时,会向访问者显示自定义错误内容,无论错误来自您的源服务器、Cloudflare 产品(包括 Cloudflare Workers),还是安全挑战。
您可以使用以下方法配置自定义错误内容:
- Error Page(错误页面):当发生特定错误(请参阅不同的错误页面类型)或显示安全挑战时,向网站访问者展示的 HTML 页面。在付费方案上,错误页面可在 zone 级别和账户级别定义,zone 级别配置优先。
- Custom Error Rule(自定义错误规则):定义在发生 HTTP 错误(状态码
400及以上)时,Cloudflare 在何种条件下向访问者提供自定义错误响应,以及将提供的确切内容。匹配的自定义错误规则优先于在账户或 zone 级别配置的、本会应用于同一错误的错误页面。
自定义错误要求您通过 Cloudflare 代理域名(或子域名)的 DNS 记录。
Cloudflare 有一套用于向网站访问者展示错误和挑战的默认页面。您可以使用错误页面和自定义错误规则来自定义这些页面。
当发生特定类型的错误时,Cloudflare 会执行以下操作:
- 在账户级别搜索该特定错误的已配置错误页面。
- 在 zone 级别搜索该特定错误的已配置错误页面(若存在,将优先于账户级别的错误页面)。
- 在账户级别搜索匹配的自定义错误规则。该规则将优先于账户或 zone 级别的 500 类和 1000 类错误页面。
- 在 zone 级别搜索匹配的自定义错误规则。该规则将优先于账户或 zone 级别的 500 类和 1000 类错误页面,以及账户级别的自定义错误规则。
- 如果安全规则(例如 WAF 自定义规则 或速率限制规则)触发了自定义拦截响应,而不是默认的 Cloudflare WAF 拦截页面,则该规则特定的拦截响应将优先于错误页面或匹配的自定义错误规则。
- 如果上述任一配置适用,则向访问者提供自定义错误内容。否则,以客户端请求的格式(JSON、Markdown 或 HTML)提供该特定错误类型的默认错误页面。有关结构化错误响应(JSON 或 Markdown)的更多详细信息,请参阅错误响应。
自定义错误适用于所有付费方案。确切功能取决于您的 Cloudflare 方案。
| Free | Pro | Business | Enterprise | |
|---|---|---|---|---|
Availability | No | Yes | Yes | Yes |
Number of rules | 0 | 25 | 50 | 300 |
Number of assets | 0 | 25 | 50 | 300 |
Error Pages | No | Yes | Yes | Yes |
Origin Error Pages | No | No | No | Yes |
Cloudflare 使用大量错误代码来识别处理请求流量时的问题。默认情况下,这些错误页面会提及 Cloudflare;不过,您可以创建自定义错误页面,为用户提供一致的品牌体验。
错误页面不适用于 HTTP 状态码为 500、501、503 或 505 的响应。这些例外有助于避免特定 API 端点和其他 Web 应用程序出现问题。您仍然可以使用自定义错误规则自定义这些状态码的响应。
如果您使用的是 Cloudflare 付费方案,可以在 zone 级别或整个账户创建自定义错误页面。zone 级别错误页面优先于账户级别错误页面。
此外,Enterprise 客户可通过在仪表板的 Error Pages(错误页面) 中开启 Origin Error Pages(源站错误页面),在其源站自定义 5XX 错误页面(错误 520-527 除外)。
您可以设计在安全挑战期间或发生错误时显示的自定义错误页面。有关不同错误页面类型的更多信息,请参阅错误页面类型。
自定义错误规则定义了在发生 HTTP 错误(状态码 400 及以上)时,Cloudflare 在何种条件下向访问者提供自定义错误内容,以及将提供给访问者的确切内容。
在定义要提供的内容时,您可以提供内联响应,或现有网页的 URL。该 URL 可以指向网页,也可以指向 JSON 内容等其他资源。
当您提供 URL 时,Cloudflare 会收集所有所需的图像、CSS 和 JavaScript 代码,并在 Cloudflare 全球网络中保存完整页面的压缩版本。此资源称为自定义错误资源,您可以在该资源的同一作用域(zone 或账户)内的一条或多条自定义错误规则中使用。
触发自定义错误规则时,Cloudflare 会用您先前定义的响应替换正文,并可(可选)替换发送给访问者的响应 HTTP 状态码。除 Content-Type 和 Content-Length 外,Cloudflare 将保留所有现有的 HTTP 响应标头。
此外,您可以为错误响应配置响应标头转换规则,以添加、更改或移除响应中的 HTTP 标头。
自定义错误规则优先于错误页面。
自定义错误资源对应一个 Web 资源,例如 HTML 网页(包括任何引用的图像、CSS 和 JavaScript 代码)。Cloudflare 会根据您提供的 URL 获取并保存该资源,以便作为错误页面提供给访问者。
自定义错误资源存储在 Cloudflare 的全球网络后,您最初提供的 URL 不再需要可用。您可以通过再次获取来更新现有的自定义错误资源。与每个自定义错误资源关联的元数据包含上次获取的时间戳,该信息会显示在仪表板中。
您可以在定义该资源的同一作用域(zone 或账户)内的一条或多条自定义错误规则中使用自定义错误资源。
当您为自定义错误资源提供 URL 时,Cloudflare 会获取该页面,并将所有引用的资源内联到 HTML 中。图像和其他二进制资源(包括通过 CSS 的 url(...) 引用的资源)会以内联为 base64 编码的 data URL。CSS 和 JavaScript 文件会以内联为 <style> 和 <script> 标签中的纯文本。处理后的页面不得超过大约 1.5 MB。
如果您的自定义错误资源超出此大小,请减少引用资源的数量或大小。您也可以将大型资源托管在外部,只要在获取资源时它们仍可从 Cloudflare 网络访问即可。