技术 SEO · 第 10 篇

HTTP 状态码与重定向:200、301、302、404、410 与软 404

约 15 分钟阅读 更新于 2026-06-24 MagicSEO 编辑部 · 人工审核 技术地基

每次浏览器或爬虫请求一个 URL,服务器都会回一个三位数的 HTTP 状态码,告诉对方"这次请求结果如何"。这个数字直接影响搜索引擎如何对待你的页面:是收录、是转移信号、还是从索引中移除。读懂状态码、用对重定向,是处理页面迁移、删除和错误时不丢流量的关键。

状态码分类总览#

HTTP 状态码按首位数字分为五大类。SEO 主要关心 2xx、3xx、4xx、5xx:

类别含义SEO 关注的代表
2xx成功200
3xx重定向301、302、304、307、308
4xx客户端错误404、410、403、429
5xx服务器错误500、503

200:成功#

200 OK 表示请求成功,页面正常返回。这是你希望所有重要内容页都返回的状态码。一个页面要被收录,第一道门槛就是能稳定返回 200(前提还要允许索引、内容有价值,详见抓取与收录原理)。

3xx:重定向#

3xx 表示请求的资源在别处,需要跳转。这是 SEO 中最需要精确使用的一类。

状态码含义SEO 用途
301永久重定向永久迁移,转移索引与信号到新 URL(最常用)
302临时重定向临时跳转,保留原 URL 的索引
307临时重定向(保留请求方法)302 的严格版,常见于 HSTS
308永久重定向(保留请求方法)301 的严格版
304未修改缓存协商,内容未变,节省带宽与抓取

301 vs 302:最重要的区别

这是 SEO 中最容易用错、代价也最大的选择。

  • 301(永久):告诉搜索引擎"旧 URL 已永久搬到新 URL"。索引和排名信号会转移到新 URL,旧 URL 最终被新 URL 取代。
  • 302(临时):告诉搜索引擎"旧 URL 只是暂时跳转,以后还会回来"。搜索引擎会保留旧 URL 的索引,不转移信号。
场景该用
换域名、改 URL 结构301
HTTP 迁移到 HTTPS301
删除页面但有等价替代页301
合并重复页面301
限时活动页临时跳转302
A/B 测试临时分流302
地区/语言临时跳转302
用错的代价永久搬迁却用了 302,搜索引擎会以为变动是临时的,迟迟不把信号转给新 URL,新页面排名上不去、旧页面又还占着索引。许多服务器和框架的默认重定向是 302,迁移时务必显式指定 301。

4xx:客户端错误#

状态码含义SEO 处理
404未找到正常现象;有替代页则 301,否则可保留
410永久删除更强的删除信号,移除更快
403禁止访问检查是否误拦截了 Googlebot
429请求过多限流过严会阻碍抓取,需放宽

404 与 410:页面不存在

很多人对 404 有不必要的恐惧。事实是:404 是网络的正常组成部分,本身不会损害网站整体排名。页面会被删除、链接会失效,这很正常。关键在于"该不该用别的方式处理":

  • 有等价替代内容 → 用 301 重定向到替代页,保住信号和用户体验。
  • 内容彻底没了、无替代 → 保留 404 或 410 是正确的,不要硬塞 301。

404 与 410 的差别:404 是"现在没找到"(可能以后会有),410 是"永久没了"。410 是更强烈的删除信号,Google 通常移除得更快,但实践中两者最终效果接近。一个友好的 404 页面应保留站点导航、搜索框和返回首页入口,帮用户找到出路。

不要把所有 404 都 301 到首页把大量已删除页面统统 301 到首页,Google 会把这种重定向当作软 404 处理(因为目标与原内容无关)。只有当存在真正相关的替代页时才用 301,否则老老实实返回 404/410。

软 404:最隐蔽的坑#

软 404(Soft 404)是指:页面实际返回了 200 成功状态码,内容却是"页面不存在/无内容"。状态码和内容自相矛盾,搜索引擎会困惑,并自行把它判为软 404、拒绝收录。

典型软 404问题正确做法
"抱歉,未找到页面"却返回 200状态码与内容矛盾返回真实 404/410
空的搜索结果页返回 200无实质内容被当软 404noindex 或返回适当状态
已下架商品页显示空壳返回 200薄内容301 到分类页或返回 404
删除页跳转到首页(200)目标无关,判为软 404无替代则直接 404

软 404 会出现在 Google Search Console 的页面索引报告中。排查的核心是:让真正不存在或无内容的页面,返回与实际相符的状态码。

5xx:服务器错误#

5xx 表示服务器自身出错。它对 SEO 的危害比 404 大得多——因为它意味着连"正常响应"都做不到。

  • 500 内部服务器错误:代码或服务器配置出错。偶发可接受,持续出现会让页面被降权甚至移出索引。
  • 503 服务不可用:服务器临时过载或维护。计划内维护应主动返回 503(可带 Retry-After 头),告诉爬虫"稍后再来",避免它把维护页当成真实内容或错误。
维护用 503,不要用 200网站维护时如果返回 200 的"维护中"页面,Googlebot 可能抓到这个空内容并更新索引,造成排名波动。正确做法是全站临时返回 503 + Retry-After,维护结束后恢复 200。

重定向链与重定向环#

重定向用对了是良药,用乱了是负担。两个常见问题:

  • 重定向链(Chain):A→B→C→D,要跳好几次才到最终页。每一跳都增加延迟、消耗抓取预算,链条过长搜索引擎可能中途放弃。
  • 重定向环(Loop):A→B→A 无限循环,页面永远打不开,对用户和爬虫都是死路。
消除重定向链
# 差:多跳链条
/old      → /interim   (301)
/interim  → /newer     (301)
/newer    → /final     (301)

# 好:每个旧 URL 直接到最终目标
/old      → /final     (301)
/interim  → /final     (301)
/newer    → /final     (301)

同时,更新站内的内部链接,让它们直接指向最终 URL,而不是依赖重定向跳转——这是URL 结构网站迁移里反复强调的原则。

重定向、canonical、noindex 的分工#

它们都能影响搜索引擎对 URL 的处理,但解决不同问题,不能混用。

工具页面是否可访问适用
301 重定向否,跳到目标旧 URL 不再需要,永久搬迁
canonical是,都可访问多个 URL 都要保留,只索引一个
noindex页面给用户看,但不进搜索结果
404 / 410否,不存在内容彻底删除且无替代

三者的边界在 Canonical 规范标签 一篇中有更详细的对比。

如何查看状态码#

  • 浏览器开发者工具:Network 面板里每个请求都显示 Status。
  • 命令行 curlcurl -I https://example.com/page 查看响应头和状态码,-IL 可跟踪整条重定向链。
  • Google Search Console:URL 检查工具显示 Google 抓取到的状态;页面索引报告按"未找到 404""网页会重定向""软 404"等成批归类。
  • Screaming Frog 等爬虫:全站抓取,批量列出所有状态码、重定向链和软 404。
用 curl 跟踪重定向
$ curl -IL https://example.com/old-page

HTTP/2 301
location: https://example.com/new-page

HTTP/2 200
content-type: text/html; charset=utf-8

本站的状态码策略#

本站示范MagicSEO 所有正式内容页都稳定返回 200;HTTP 请求统一 301 永久重定向到 HTTPS(见 HTTPS 与网站安全);不存在的路径返回真实 404,配有保留导航的友好错误页,绝不用返回 200 的"未找到"假页制造软 404。作为纯静态站,URL 与文件一一对应,天然避免了动态站常见的软 404 和重定向环问题。

状态码与重定向清单#

  • 重要内容页稳定返回 200
  • 永久搬迁/换域/HTTP→HTTPS 一律用 301
  • 临时跳转才用 302,不要混淆
  • 删除页有替代则 301,无替代则 404/410
  • 不把无关页面批量 301 到首页
  • 不存在的页面返回真实 404/410,杜绝软 404
  • 维护期返回 503 + Retry-After,而非 200
  • 消除重定向链,旧 URL 一步到最终目标
  • 无重定向环
  • 内部链接直接指向最终 URL
  • 定期用 GSC / 爬虫检查异常状态码

常见问题#

301 和 302 重定向有什么区别?

301 是永久重定向,告诉搜索引擎原 URL 已永久迁移到新 URL,应该把索引和排名信号转移到新 URL,并最终用新 URL 替换旧 URL。302 是临时重定向,表示原 URL 只是暂时跳转,未来还会启用,搜索引擎会保留原 URL 的索引。永久搬迁(换域名、改 URL、HTTP 转 HTTPS)必须用 301;临时活动页、A/B 测试等才用 302。用错会导致信号无法正确传递。

404 和 410 有什么不同?需要修复 404 吗?

404 表示"未找到",410 表示"永久删除"。410 是更强的删除信号,Google 通常会更快地从索引中移除 410 页面,但实践中两者效果接近。404 本身不会损害网站整体排名,是网络的正常组成部分。是否处理取决于场景:如果页面有等价的替代内容,用 301 重定向到替代页;如果内容彻底没了且无替代,保留 404 或 410 是正确的,不要强行 301 到首页。

什么是软 404(Soft 404)?

软 404 指页面实际返回了 200 成功状态码,但内容其实是"页面不存在/无内容"(比如空的搜索结果页、显示"抱歉,未找到"却返回 200 的页面)。这会让搜索引擎困惑:状态码说成功,内容却是错误。Google 会自行将其判定为软 404 并不予收录。正确做法是让真正不存在的页面返回真实的 404 或 410 状态码。

重定向链会影响 SEO 吗?

会。重定向链(A→B→C→D)会拖慢页面加载、浪费抓取预算,过长的链条还可能导致搜索引擎在中途停止跟踪。最佳做法是让每个旧 URL 直接一步重定向到最终目标(A→D),并更新站内所有内部链接,使其直接指向最终 URL,而不是依赖重定向。