← 返回博客首页

HTTP 状态码完整指南:1xx 到 5xx 详解与 SEO 影响

HTTP 状态码是什么

当浏览器或客户端向服务器发送请求时,服务器会在响应中返回一个 3 位数字的状态码,用来告知客户端请求的处理结果。HTTP 状态码由 RFC 9110 定义,是 Web 通信的基础语言。理解状态码不仅对调试至关重要,对 SEO 优化和用户体验也有直接影响。

状态码分类总览

类别 含义 典型场景
1xx 信息性 请求已接收,继续处理
2xx 成功 请求被成功处理
3xx 重定向 需要进一步操作才能完成
4xx 客户端错误 请求有误,服务器无法处理
5xx 服务器错误 服务器处理时出错

1xx 信息性状态码

100 Continue

客户端发送了带 Expect: 100-continue 的请求头,服务器确认可以继续发送请求体。常用于大文件上传前的预检。

101 Switching Protocols

客户端请求切换协议,服务器同意。最典型的场景是 WebSocket 握手:HTTP 连接升级为 WebSocket 长连接。

实际开发中 1xx 很少手动处理,框架和浏览器会自动管理。

2xx 成功状态码

200 OK

最常见的状态码。请求成功,响应体包含请求的资源。GET 请求返回数据,POST 请求返回创建结果。

201 Created

请求成功且服务器创建了新资源。通常用于 POSTPUT 请求后,响应头应包含 Location 指向新资源的 URI。

204 No Content

请求成功但响应体为空。常用于 DELETE 请求成功后,或 PUT 更新成功无需返回内容时。前端 Axios 收到 204 时 response.data 为空。

206 Partial Content

服务器成功处理了范围请求(Range 头)。用于视频流、大文件分块下载、断点续传。响应头包含 Content-Range

3xx 重定向状态码

301 Moved Permanently

资源已永久移动到新地址。搜索引擎会将旧 URL 的权重转移到新 URL,是 SEO 友好的永久重定向。适用于域名迁移、URL 结构调整。

302 Found

资源临时移动到新地址。搜索引擎不会转移权重。历史上 302 的行为在不同浏览器中不一致,现代场景建议用 307 替代。

304 Not Modified

客户端发送了条件请求(If-Modified-SinceIf-None-Match),资源未修改,客户端可使用缓存版本。不返回响应体,大幅节省带宽。

307 Temporary Redirect

临时重定向,但保持原始请求方法(302 在实践中可能将 POST 变为 GET,307 不会)。现代 Web 推荐用 307 替代 302。

308 Permanent Redirect

永久重定向,保持原始请求方法。是 301 的方法安全版本,适用于 API 场景的永久迁移。

重定向选型对照

需求 推荐状态码
永久迁移网页(SEO) 301
永久迁移 API 端点 308
临时重定向网页 307
HTTP 升 HTTPS 301
带 www 跳无 www 301

4xx 客户端错误

400 Bad Request

请求语法错误,服务器无法理解。常见原因:参数格式错误、JSON 解析失败、缺少必填字段。

401 Unauthorized

未认证。请求缺少有效的身份验证凭证。响应头通常包含 WWW-Authenticate。注意:名称是 "Unauthorized" 但实际语义是 "Unauthenticated"。

403 Forbidden

服务器理解请求但拒绝执行。与 401 的区别:401 是"你是谁?",403 是"我知道你是谁,但你没权限"。

404 Not Found

资源不存在。这是最常见的客户端错误,也是 SEO 杀手——大量 404 会降低爬虫抓取效率。

405 Method Not Allowed

请求方法不被允许。如对只支持 GET 的接口发送 POST。响应头 Allow 应列出支持的方法。

408 Request Timeout

客户端未在服务器等待时间内发送请求。常见于网络不稳定或客户端超时。

409 Conflict

请求与服务器当前状态冲突。如并发更新同一资源导致版本冲突。

413 Payload Too Large

请求体超过服务器允许的大小。常见于文件上传。Nginx 默认限制 1MB,可通过 client_max_body_size 调整。

429 Too Many Requests

请求频率超过限制(速率限制)。响应头应包含 Retry-After 告知客户端何时重试。是 API 网关的核心机制。

5xx 服务器错误

500 Internal Server Error

服务器内部错误。最笼统的服务器错误,通常是未捕获的异常。排查需查看服务器日志。

501 Not Implemented

服务器不支持请求的功能。较少见,通常表示服务器不识别请求方法。

502 Bad Gateway

作为网关或代理的服务器从上游收到无效响应。常见于 Nginx 反向代理时后端服务崩溃或未启动。

503 Service Unavailable

服务暂时不可用。通常因为服务器过载或维护。响应头 Retry-After 建议客户端稍后重试。搜索引擎遇到 503 会稍后重试而非降权,适合计划维护。

504 Gateway Timeout

网关等待上游服务器响应超时。与 502 的区别:502 是收到了错误响应,504 是根本没有收到响应。

511 Network Authentication Required

需要网络认证。常见于公共 Wi-Fi 的 captive portal(强制门户)。

SEO 影响详解

状态码直接影响搜索引擎爬虫的行为和网站排名:

状态码 SEO 影响 处理建议
200 正常索引 确保页面内容高质量
301 权重转移,保持排名 用于永久 URL 变更
302 不转移权重,可能被视为临时 避免长期使用
404 爬虫会从索引中移除该页 配置自定义 404 页面,提交死链
410 明确告知资源永久消失,加速移除 用于内容主动下线
500 爬虫可能短期重试,长期降权 监控并立即修复
503 爬虫会稍后重试,不降权 维护时使用,设置 Retry-After

SEO 最佳实践

  • 域名迁移用 301 而非 302
  • 删除的页面返回 410 而非 404,加速索引移除
  • 维护期间返回 503 + Retry-After,避免降权
  • 定期通过 Google Search Console 或百度站长平台检查抓取错误
  • 避免软 404(返回 200 但内容是"未找到"页面)

错误排查速查表

症状 可能原因 排查方向
400 请求体格式错误 检查 Content-Type 和 JSON 格式
401 Token 过期或缺失 检查 Authorization 头
403 权限不足或 IP 被封 检查用户角色和防火墙规则
404 路由错误或资源已删 检查路由配置和资源是否存在
429 触发速率限制 降低请求频率,检查 Retry-After
500 代码异常或配置错误 查看服务器日志和错误堆栈
502 后端服务崩溃 检查后端进程是否运行
503 服务过载或维护中 检查负载均衡和服务器资源
504 后端响应超时 检查数据库查询和外部 API 调用

监控与告警建议

  • 监控 5xx 错误率,超过 1% 立即告警
  • 关注 429 趋势,判断是否需要扩容
  • 记录 404 的 Referer,发现内部死链
  • 使用 APM 工具(Sentry、Datadog)追踪错误来源
  • 配置健康检查端点,配合负载均衡自动摘除故障节点
← 返回博客首页