搜索抓取

搜索蜘蛛抓取:301 跳转链过长与最终落地 URL 不一致的排查顺序

站点改版、换域名或调目录后,容易出现多层 3xx 跳转、最终地址不统一的情况。本文梳理跳转链对抓取预算与路径稳定性的影响,给出从入口抽样、状态码核对到跳转收敛、日志验证的排查顺序,帮助把入口地址压到一跳落地。

搜索抓取

搜索蜘蛛抓取:301 跳转链过长与最终落地 URL 不一致的排查顺序

站点做改版、换域名或调整目录结构时,最容易留下的一类问题是重定向链:一个入口地址要经过两三次甚至更多次 3xx 跳转,才落到真正的页面上。对访问者来说只是多等一会儿,对搜索蜘蛛来说,每一次跳转都是一次额外的请求、一次额外的连接与响应等待,也是抓取路径上多出来的一个不确定点。

重定向链会带来哪些抓取损耗

  • 抓取预算被摊薄:每个入口都多消耗一次请求,深度越大损耗越明显。
  • 中间地址可能被当成独立入口记录,最终页面的发现路径变得零散。
  • 链路上任意一环变慢、超时或返回异常,最终页面就抓不到,但日志里看起来“访问过”。
  • 跳转类型混用(301、302、307、308 交替)会让蜘蛛对最终地址的判断不稳定。
  • 内链、Sitemap、canonical 各写一个版本时,同一内容会出现多个入口。

常见的跳转链形态

排查前先知道要去哪里找问题,下面几种形态在站点里很常见:

  • 协议与主机叠加:http 跳到 https,再跳到带 www,最后还补一次结尾斜杠。
  • 新旧域名叠加:旧域名整体跳到新域名,新域名又跳到新的目录结构。
  • 设备分流叠加:按 UA 判断后跳到移动站,移动站再跳一次到具体路径。
  • 边缘规则叠加:源站已经做了跳转,CDN 或负载均衡层又加了一条规则。
  • 应用层补刀:框架中间件、插件或后台设置里各自配了一条跳转。

排查顺序

  1. 从日志或内链中抽取一批真实入口 URL,覆盖首页、栏目页、详情页和曾经改过路径的老地址。
  2. 逐条记录完整跳转链:每一跳的状态码、Location 值、响应耗时。
  3. 检查是否存在环路(A→B→A)或最后一跳指向 404、410、空页面。
  4. 把跳转链的最终地址,与 Sitemap、内链、canonical 中写的地址逐一对齐。
  5. 检查各层配置:Web 服务器 rewrite、应用路由、CDN 回源与边缘规则、WAF 自定义响应。
  6. 统计日志中 3xx 请求的占比和来源分布,判断是集中在少数老路径,还是普遍存在。

收敛与修复方向

  • 先定唯一地址:确定最终的协议、主机名、路径形式,之后所有内部链接直接写这个地址,不再绕行。
  • 把多跳压成一跳:让入口一次性跳到最终地址,避免 A→B→C 的串联。
  • 区分跳转类型:永久迁移用 301 或 308,临时或灰度用 302 或 307,不要长期混用同一组地址。
  • 只保留必要的兼容跳转:老地址可以保留一跳,但不要再让新的规范地址继续参与跳转。
  • 检查重复规则:CDN、负载均衡、应用层三处都可能加跳转,改完一处要确认其他层没有叠加。

改完之后的核对方式

调整后重新抽样走一遍跳转链,重点看三件事:入口到最终页面是否只剩一跳;最终页面是否稳定返回 200 且内容与入口主题一致;日志中 3xx 的数量是否下降、最终页面的抓取次数是否回升。同时留意发现队列里重复出现的中间地址是否逐步减少。

重定向收敛属于结构性调整,抓取与收录的变化需要一段时间观察,短期内的日志波动不必过度解读,重点看趋势是否往单跳落地方向走。