Search Console 报「重定向错误」:Google 没走到最后一跳就放弃了
「网页会自动重定向」是 Google 跟着跳转走完了,「重定向错误」是 Google 走到一半放弃了。四种原因、为什么手动测试看着正常,以及一条规则让我们整站循环跳转了几分钟。
Like it ? share it
Search Console 里有两个带「重定向」的状态,意思正好相反。「网页会自动重定向」表示 Google 跟着跳转走完了,收录的是目标页面,一切正常。「重定向错误」表示 Google 开始沿着跳转链往下走,还没走到一个页面就放弃了。
只有第二个是问题。好在只要知道 Google 把什么算作失败,它通常很好查。
Google 的定义
网页索引报告的帮助文档只列了四种原因:
Google 遇到了以下某个重定向错误:
- 重定向链太长
- 重定向循环
- 重定向网址最终超出了网址长度上限
- 重定向链中包含不良网址或空网址 [1]
你看到的每一个重定向错误,都属于这四种之一。跳转链末尾是 404 不在其中,跳到一个 Google 不想收录的页面也不在其中,那些各有各的状态。重定向错误的意思是,Google 根本没走到最终页面。
多长算太长
Google 的抓取工具文档给了具体数字:「默认情况下,Google 抓取工具会跟踪最多 10 次重定向」,「Googlebot 在抓取一般 Web 内容时通常会跟踪 10 次重定向」[2]。
10 次听起来很宽裕,一次规划好的跳转远远用不到。但跳转链是多年慢慢攒出来的:先加了 HTTP 跳 HTTPS,后来有人加了裸域名跳 www,再加一条补斜杠的规则,然后是旧 URL 结构的跳转,再叠一次改版迁移。每条规则加进来时都有道理,合在一起,一个旧 URL 就要跳六次。要是两条规则意见不一致,这条链就永远走不完。
我们自己的裸域名要跳两次:http://enfect.com/ 先到 https://enfect.com/,再到 https://www.enfect.com/。离上限还远,但多了一跳。Google 的重定向文档说,永久跳转会被索引系统当作一个信号,「表明重定向目标应是规范网址」[3]。每个旧 URL 都直接指向最终地址,这个信号最清楚;跳转链从一开始就不让它变长,也就不会长到 10 跳以上。
为什么你手动测试一切正常
这类帖子里最常见的困惑就是这个:站长自己测了一下 URL,看到干净的 301,最后落到 200,想不通 Google 在报什么错。
r/TechSEO 上 2026 年 8 月有个帖子正是这样。一个高权重网站给 example.com/de 加了外链,这个地址按全站补斜杠规则 301 到 example.com/de/,而 /de/ 直接返回 200。站长确认 Googlebot 拿到了 301,也没被 CDN 拦截,Search Console 却依然报重定向错误 [4]。
有三种可能的解释,建议按这个顺序查。
报告比你的修复更早。 网页索引状态反映的是 Google 最后一次抓取那个 URL 时的情况。如果抓取那天跳转链是坏的,之后修好了,错误会一直留着,直到 Google 再来。URL 检查里能看到最后抓取日期,和你改动的时间对一下。
Google 的实时测试不跟跳转。 Google 的抓取工具文档写着:「Google 检查工具不会跟踪重定向。」[2] 对一个会跳转的 URL 做实时测试,只能说明第一跳没问题,看不到 Googlebot 在第三跳遇到了什么。
Googlebot 看到的是另一条链。 按语言、国家、Cookie 或设备做的跳转,可能把 Googlebot 送到你的浏览器永远不会去的地方。Googlebot 主要从美国抓取,不带你的 Cookie,也不带你的 Accept-Language。/de 这种路径正是按语言跳转的典型场景。如果一条地区规则把美国访客从 /de/ 送到 /en/,另一条规则又把 /en/ 送回去,就形成了一个只有 Googlebot 才会遇到的循环。我们没法确认那个帖子里就是这个原因,但如果是我们,会先测这个。
所以要按 Googlebot 的方式去测:不带 Cookie,不带语言偏好,用 Googlebot 的 User-Agent。每一跳都自己跟下去,因为实时测试不会替你跟。
我们自己造成的一次重定向循环
2026 年 9 月 23 日,我们给裸域名加了一个跳转到 www 的规则。就是 next.config.mjs 里的一条规则,按主机名 enfect.com 匹配。
我们用的部署适配层把这个主机名当成不带锚点的正则去匹配,于是 enfect.com 也匹配上了 www.enfect.com。它也没有把目标地址填完整。结果 www 上的每个页面,包括首页,都跳到了字面路径 /:path*。这个路径同样在 www 上,又命中了同一条规则,跳回它自己。
一条规则同时占了 Google 四种原因里的两种:跳转链里有不良网址,而且形成了循环。首页打不开了,所以几分钟内就发现了,我们回滚了那次部署。现在裸域名的跳转放在应用之前运行的 Worker 入口里,主机名用的是完全相等的比较。
这件事给了我们两个教训。跳转规则也是代码,要在生产环境的主机名上测,不能只在本地开发服务器上测,两边匹配规则的方式可能不一样。另外,每次改完跳转,都要从外部检查一遍:请求旧 URL,数一数跳了几次,确认最后一个响应是 200。
某天突然暴增,原因几乎总是那天的改动
r/SEO 上 2026 年 4 月有个帖子,一个医疗类网站从 3 月 18 日前后开始,重定向错误突然大量增加,很多页面转成了「已抓取 - 尚未编入索引」。排第一的回复不谈内容也不谈权重,只问了一个问题:那个日期前后,网站或主机那边改了什么?[5] 站长回答说改了结构化数据,页面内容没动。
改结构化数据通常不会导致重定向错误。插件更新、CDN 设置、SSL 模式调整、主机迁移却经常会,而且主机商改了什么,站长未必知道。重定向错误在某一天突然跳涨,先去翻部署记录和主机商的变更日志。
按 Google 的四类原因,常见的情况
链太长:协议、主机名、补斜杠、旧路径几种规则层层叠加。解决办法是让每个旧 URL 直接指向最终地址。
循环:服务器强制 HTTPS,而 CDN 用 HTTP 回源;应用和服务器对结尾斜杠的规则不一致;应用和主机各自认为不同的主机名才是规范的。浏览器里对应的就是 ERR_TOO_MANY_REDIRECTS,常见原因在这篇文章里(英文)。
网址超长:每跳一次就追加一个参数,常见于登录或跟踪跳转,把 ?redirect_to= 一层层编码进自己,直到 URL 超过长度上限。
不良或空网址:Location 头里是没替换掉的占位符(比如我们的 /:path*)、格式错误的绝对地址,或者干脆是空的。
怎么修
- 在 URL 检查里打开一个出问题的 URL,记下最后抓取日期。如果之后改过跳转,错误可能已经不存在了。
- 用 Googlebot 的 User-Agent、不带 Cookie,把跳转链走一遍,记下每一跳的状态码和
Location头。 - 判断属于四种原因里的哪一种:跳转次数太多、某个 URL 重复出现、URL 每跳一次就变长,还是
Location格式有问题。 - 把跳转链压缩成一跳,用 301 或 308 从第一个 URL 直接跳到最终地址。
- 把内链和站点地图都改成最终 URL,两边都不应该出现会跳转的 URL。
- 在 Search Console 里点「验证修正情况」。Google 说验证过程通常最多需要大约两周 [1]。
第 2 步可以用我们的重定向检测工具:它逐跳跟踪一个 URL,列出每次响应的状态码,最多跟 10 跳,和 Googlebot 的上限一致,还会标出循环。一条在这里走不通的链,在 Google 那边多半也走不通。
参考来源
- Google Search Console 帮助,网页索引报告。
- Google 开发者文档,HTTP 状态代码对 Google 抓取工具的影响。
- Google 搜索中心,重定向和 Google 搜索。
- r/TechSEO,Googlebot got a clean 301 (verified, not blocked by CDN) but never followed it — "Redirect error" in GSC even though everything tests fine manually,2026 年 8 月 16 日。
- r/SEO,Sudden deindexing + redirect errors after March 18 – need help diagnosing,2026 年 4 月 1 日。
enfect.com 的跳转链于 2026 年 9 月 24 日实测。9 月 23 日的事故根据本站自己的部署记录整理。