网站打不开先看哪一层:301、404、502 与 503 排查指南
刚更新博客,首页能开,旧文章却打不开;朋友看到错误页,自己刷新又正常。此时先别重装程序或反复重启服务。记录完整网址、发生时间、访问网络,以及首页和文章页是否同时出错,通常比一句“网站挂了”更有用。
四个状态码分别说明什么
301 是永久重定向。 请求的地址已迁到响应头 Location 指定的位置。旧域名转新域名、HTTP 转 HTTPS 都可能正常使用它。异常在于目标错误、来回跳转,或旧文章全部被送到不相关的首页。
404 是没有找到目标资源。 先核对路径、大小写、末尾斜杠和文章是否真的发布,再检查生成目录。首页正常而一篇文章失败,优先查链接和路由,不要直接判断整台服务器离线。
502 是网关拿到了无效的上游响应。 例如反向代理后面的应用没有正确应答。503 是服务暂时不能处理请求,可能正在维护或过载。两者都不能单凭数字断定数据库坏了;还要看代理、应用日志与托管平台状态。状态码定义见 MDN。
用少量请求收集证据
下面以 macOS、Linux 终端为例。把示例网址替换成自己管理的公开页面,不要使用退出登录、删除记录或含令牌的操作链接。先查看响应头:
curl -I --connect-timeout 5 --max-time 15 'https://example.com/article/'
-I 发出 HEAD 请求,不取正文;时间限制避免无限等待。记录第一行状态和 Location。不要直接加入自动跳转,先确认目标仍是你认识的网站。某些服务对 HEAD 的处理与 GET 不同,若结果可疑,可请求普通公开页面并丢弃正文:
curl -sS -D - -o /dev/null --connect-timeout 5 --max-time 15 'https://example.com/article/'
这不是压力测试。检查一两个受影响地址即可,别循环高频访问。命令不携带登录信息,但响应头可能包含 Cookie;给客服截图前应遮挡敏感值。不要用关闭证书校验的参数掩盖 HTTPS 报错。参数说明见 curl 官方手册。
按结果决定下一步
遇到 301,逐个查看目标地址,画出简短的“旧页到新页”关系,确认没有绕回原点;跳转正确就不需要删除规则。遇到 404,用发布目录核对文件,再检查站内链接是否仍指向旧路径。确实迁移的内容应对应到相关新页,而不是无差别转首页。
遇到 502,检查应用进程与代理上游地址是否匹配,再查同一时间的错误日志。遇到 503,先确认维护计划、资源限制和平台公告;若响应提供 Retry-After,按其提示等待,不要连续刷新增加负担。只管理托管博客的人可以把时间、网址、状态码和脱敏截图交给服务商。
排查时一次只修改一项,并保留可回退的配置副本。若同时更换域名、缓存规则和代理设置,即使恢复也难以判断原因;没有管理权限时,把证据交给负责人比盲目照抄命令更稳妥。
怎样算修好了
修复后重新检查原网址,并在浏览器确认正文、图片和样式。得到 200 只是服务器接受了请求,仍可能返回错误模板;首页恢复也不代表文章全部恢复。保留修复前后各一次结果,以及实际修改项,便于复发时比较。
最后记住:没有收到 HTTP 状态码时,也可能是域名解析、连接或证书阶段失败。不要把终端的连接错误当成“状态码 000 的服务器故障”,应先处理连接层问题。
延伸阅读
需要继续查服务端记录时,可以按日志时间窗口排查流程提取必要上下文。