跳至主内容
打造多语言 Cloudflare 错误页
  1. 文章/

打造多语言 Cloudflare 错误页

··约 3 分钟· loading · ·
Zakk
作者
Zakk
在澳洲學習商科与 Paper 异地恋,养着 马铃薯 与 脆薯饼,两只可爱的天竺鼠,同时写 Linux 与日常随笔。
本页导航

为什么要做 error.zakk.au?
#

Cloudflare 默认错误页与网站调性差很多,访问者会觉得被跳出站外。我想要一个轻量替代方案,能够:

  • 自动侦测浅色/深色模式,同时允许用户手动切换
  • 自动侦测语言(英文、繁体中文、简体中文),并提供切换按钮
  • 显示 Ray ID 与预填资料的支援邮件连结,缩短排障时间
  • 完全托管在 Cloudflare Pages,只要 git push 就能更新

于是就诞生了 Zakkaus/cf-pages 仓库,以及正式上线的 error.zakk.au

界面亮点速览
#

自定义 Cloudflare 错误页首页(浅色模式)
自定义 Cloudflare 错误页首页(深色模式)
浅色首页聚焦语言与模式切换,也把 Ray ID 支援放在显眼位置,重点一目了然。深色主题保留品牌蓝点缀,同时维持充分对比,不影响夜间阅读体验。
Cloudflare 管理式挑战页(浅色模式)
Cloudflare 管理式挑战页(深色模式)
挑战流程逐步说明下一步动作,并把状态页、求助连结摆在同一视线范围。深色版本延续同样层级与按钮强调色,强化品牌一致性与可读性。

仓库里有哪些模板?
#

仓库收录常见的 Cloudflare 错误模板,并用 Tailwind CSS 重写版面:

模板场景
cf-1000.htmlCloudflare 1000 系列配置错误
cf-500.html源站 5xx 错误
cf-waf-block.htmlWAF(403)拦截
cf-ip-block.htmlIP / 国家封锁
cf-ip-challenge.htmlcf-attack.html管理式验证 / I'm Under Attack Mode
cf-rate-limit.html429 速率限制
offline.htmlAlways Online™ 离线提示

每个页面都会显示品牌视觉(Logo、3D 树袋熊)、实时 Ray ID,以及引导使用者自助排障的主要按钮;搭配紧凑卡片式排版,关键信息永远停留在首屏。

多语言文案与自动切换
#

所有文案集中在 lang.js

  1. 读取 navigator.language
  2. 匹配 enzh-Hantzh-Hans
  3. 若没有匹配则使用默认语言

用户仍可手动选择语言,并会写入 localStorage,下次访问会自动套用。

设计系统与样式
#

  • Tailwind CSS 流程:在 input.css 编写类名,执行 npm run build(或 pnpm run build)生成压缩后的 output.css,并交给 PurgeCSS 自动移除未使用样式。
  • 日夜模式成对设计assets/screenshots/*.webp 保留浅色与深色截图,确保对比符合 WCAG。
  • 共享组件:按钮、提示、栅格与本站 Blowfish 主题一致,让使用者在各站切换毫无违和感。
  • 品牌细节延伸:插画、渐层与 CTA 色票沿用 zakk.au 设计系统,维持完整体验。

部署到 Cloudflare Pages
#

  1. 将仓库连接到 Pages,构建命令使用 npm run build
  2. Framework preset 选择 None,Pages 会在部署时编译 Tailwind。
  3. 输出目录设为 /,Cloudflare 会直接映射根目录的 HTML 模板。
  4. 在 Custom Error Pages 指定 error.zakk.au,也可延伸到 help.zakk.au 等站点。

每次提交都会生成预览环境,可先验证再在 Cloudflare 控制台启用。

Ray ID 的支援流程
#

模板底部的「Need help?」区块会:

  • 实时显示触发错误的 Ray ID
  • 提供预填邮件链接,把 Ray ID、时间戳与客户端 IP 一次交给支援信箱(Cloudflare 注入后)
  • 附上状态页链接,若问题出在我端能立即公告

这样第一次联络就带齐所有细节,大幅减少追问。

想自己试试?
#

  • 查看程式码与截图:Zakkaus/cf-pages
  • 触发范例页面(例如离线提示):error.zakk.au/offline.html
  • 想换成自己的品牌?替换仓库里的素材、调整 lang.js 文案,再部署到你的 Cloudflare Pages 项目即可。

这套错误页让「Cloudflare 提示」不再突兀,也能在关键时刻提供语言一致、资讯充分的支援体验。

延伸阅读

关于我

··约 3 分钟· loading

时间轴

··约 2 分钟· loading