网站错误页怎么做?404、50x 自定义页与优雅降级实操
作者:备案源头内容团队内容审核:备案源头内容团队更新于 2026年8月22日
用户访问到一个"Nginx 默认 502 白页"或浏览器原生 404,会直接流失;搜索引擎抓到大量返回 200 的"软 404"也会伤收录。错误页看似小事,做好了却能留住用户、保护 SEO。本文讲清怎么把错误页做对。
先分清常见错误码
| 状态码 | 含义 | 典型原因 |
|---|---|---|
| 404 | 页面不存在 | 链接错误、页面已删除 |
| 403 | 禁止访问 | 权限/防盗链/被拦 |
| 500 | 服务器内部错误 | 程序异常 |
| 502 | 网关错误 | 反代后端(Node/PHP)挂了或没起 |
| 503 | 服务不可用 | 过载或维护中 |
| 504 | 网关超时 | 后端响应太慢 |
502/504 常见于反向代理场景(后端进程崩溃),排查见 网站打不开怎么排查;50x 频发要结合 日志分析 定位。
自定义 404 页:留住用户 + 正确状态码
默认 404 页对用户不友好。自定义一个带导航、搜索、返回首页入口的 404 页,能把误入的用户导回站内。关键:自定义 404 页必须真的返回 404 状态码,不能返回 200——否则搜索引擎会把大量"内容其实不存在"的页当正常页收录(软 404),浪费抓取预算、稀释站点质量。
# Nginx 自定义错误页(404 与 50x)
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /404.html { internal; }
location = /50x.html { internal; }
# 反向代理场景:后端挂了也能兜底 50x 静态页
location / {
proxy_pass http://127.0.0.1:3000;
proxy_intercept_errors on; # 让 Nginx 接管后端错误码以显示自定义页
}
50x 与优雅降级
后端(Node/PHP)崩溃或过载时,用户不该看到刺眼的报错。优雅降级的做法:
- 静态兜底页:Nginx 用
proxy_intercept_errors+ 静态 50x 页,后端挂了也返回一个友好的"服务繁忙,请稍后再试"页; - 维护页(503):计划内维护时返回 503 +
Retry-After头,告诉搜索引擎"暂时不可用、稍后再来",避免它把维护当成页面消失而删除收录; - 别把 50x 缓存久:CDN 对 50x 只做极短或不缓存,避免故障恢复后仍返回错误页,见 CDN 缓存策略;
- 高可用兜底:多节点 + 健康检查能在单点故障时自动摘除坏节点,减少 50x,见 网站高可用架构。
错误页与 SEO / 收录
- 软 404 是大忌:不存在的页要返回真 404(或 410),不要返回 200 空页;
- 维护用 503 而非 200/404:让搜索引擎知道是临时的;
- 404 页别 noindex 也别进 sitemap:正常返回 404 即可,Google 会自然处理;
- 旧页删除/合并:与其留 404,不如 301 跳到相关页保留权重,见 域名跳转配置。
监控:让错误早被发现
把 50x 比例、404 数量纳入 网站运维监控 与日志告警——错误页做得再好,也只是"止血",及时发现并修复后端故障才是根本。
常见问题
Q:自定义 404 页要注意什么?
最重要的是仍返回 404 状态码(别返回 200 造成软 404),页面上提供搜索、返回首页等导流入口留住用户。
Q:网站维护时应该返回什么状态码?
返回 503(服务暂不可用)并带 Retry-After,让搜索引擎知道是临时的,别按页面消失处理。
Q:后端一崩用户就看到 502 白页怎么办?
Nginx 开 proxy_intercept_errors + 配置静态 50x 兜底页;同时用进程守护和监控减少后端崩溃。
资料来源
- Nginx 官方文档 - error_page 指令:https://nginx.org/en/docs/http/ngx_http_core_module.html#error_page
- Google 搜索中心 - 软 404 与 HTTP 状态码文档
以上为通用做法,具体配置以你使用的 Web 服务与框架文档为准。
相关阅读
网站数据怎么备份与恢复?备份策略、异地备份与恢复演练
服务器故障、误删、被攻击、迁移出错,任何一种都可能让网站数据丢失。备份不是"有就行",而是要能在需要时真正恢复回来。本文讲清网站该备份什么、怎么备、多久备一次,以及恢复怎么做。 备份什么 | 对象 | 说明 | |---|---| | 数据库 | 网站核心数据(文章、订单、用户等),优先级最高 | | 站点文件 | …
CDN 缓存策略怎么配?缓存规则、回源、刷新与预热全解析
很多站长接了 CDN 却发现两类问题:要么"改了内容用户还看到旧的",要么"命中率很低、CDN 形同虚设"。这都是缓存策略没配好。接入 CDN(见 备案网站怎么接入 CDN)只是第一步,真正让 CDN 又快又不出错,靠的是精细的缓存规则。本文系统讲清。 缓存的基本原理 CDN 在全国节点缓存你的资源副本,用户就近取,…
网站定时任务与运维自动化怎么做?自动备份、证书续期与巡检
证书忘了续、备份忘了做、日志忘了清——运维事故很多不是不会做,而是"忘了做"。把重复的运维动作交给定时任务自动执行,是最省心也最可靠的做法。本文讲清哪些该自动化、定时任务怎么用,以及自动任务本身也要监控。 哪些运维适合自动化 | 任务 | 自动化收益 | |---|---| | 数据备份 | 定时全量/增量,避免漏备…
网站数据库运维怎么做?选型、性能优化、主从与备份全解析
对大多数网站,数据库是最核心、也最难重建的资产:程序挂了能重启,数据库数据丢了或被拖慢,整站跟着崩。数据库运维不是"装完能用就行",而要在选型、性能、可靠性、安全四条线上持续投入。本文系统梳理网站数据库运维的关键点。 选型:关系型还是其它 大多数网站用关系型数据库(MySQL/MariaDB、PostgreSQL)就…
网站打不开怎么排查?从解析、端口到备案的运维排查清单
网站突然打不开,原因可能在任何一层:域名没解析、端口没放行、服务挂了、证书过期、甚至掉备案或被墙。乱试一通只会浪费时间。本文给一份从外到内、分层排查的运维清单,按顺序走一遍就能快速定位。 排查总原则:分层,从外到内 按"域名解析 → 网络与端口 → 服务器与 Web 服务 → HTTPS 证书 → 备案与被墙"的顺序…
开发、测试、生产环境怎么分离?配置管理与发布流程
直接在生产服务器上改代码、连生产数据库调试,是运维事故的高发来源。把开发、测试、生产环境分开,让改动先在安全的地方验证,是稳定运维的基础。本文讲清三套环境怎么分、配置怎么管、怎么一步步发布到线上。 三套环境各干什么 | 环境 | 用途 | 数据 | |---|---|---| | 开发(dev) | 写代码、本地调试…
网站高可用架构怎么做?负载均衡、多节点与故障转移全解析
单台服务器承载的网站,只要这台机器宕机、升级重启或被打满,网站就整体不可用。当业务对可用性有要求时,就需要从"单点"走向"高可用(HA)架构"——通过冗余和自动故障转移,让任何单一组件失效都不至于让整站瘫痪。本文系统讲清高可用的核心组件与落地要点。 先理解:可用性和单点故障 可用性常用"几个 9"衡量:99.9%(全…
备案通过后网站怎么上线?域名解析、服务器绑定与部署实操
很多站长拿到 ICP 备案通过通知后,反而卡在"接下来怎么让网站真正打开"这一步。备案解决的是"能不能上线"的资质问题,真正上线还需要一套运维动作:把域名解析到服务器、在服务器上部署站点、绑定域名、配好 HTTPS,最后验证访问。本文按实操顺序梳理。 上线前提:备案与接入都已就绪 开始部署前先确认两件事:一是备案已通…