搜索抓取

重定向链与蜘蛛抓取:一次跳转要花掉多少抓取成本

改版、换域名、调整目录时离不开重定向,但从蜘蛛的视角看,每一次 3xx 都是一次额外的请求。本文拆解链式跳转、跳转环、旧地址统一跳首页这三种常见浪费,并给出内链与 Sitemap 的写法建议和一份自查清单。

搜索抓取

重定向链与蜘蛛抓取:一次跳转要花掉多少抓取成本

做改版、换域名、调整栏目路径时,重定向是最常用的手段。但从蜘蛛的角度看,每一次 3xx 都是一次额外请求,需要在同一份抓取额度里多走一步。跳转本身没有错,问题往往出在链太长、环太多、目标太随意。

蜘蛛遇到 3xx 时会发生什么

蜘蛛请求地址 A,收到 301 指向 B。它通常不会立刻把 B 当作本次结果,而是把 B 放进待抓队列,等下一轮再去取。也就是说,一条跳转链上的每一跳都占用了一次请求。三步跳转,就是三次请求换一个最终页面。

301 与 302 在抓取上的差别

两者都会触发新的请求。区别在于长期信号:301 一般被理解为永久迁移,蜘蛛会逐步把索引和链接信号转移到新地址;302 是临时状态,蜘蛛可能继续回访旧地址,确认迁移是否恢复。如果已经确定不再回滚,长期挂着 302 只会让旧地址被反复访问。

三种常见的跳转浪费

链式跳转

A→B→C→D 这种结构,多见于多次改版叠加:http 到 https 跳一次,带 www 到不带 www 再跳一次,旧栏目到新栏目又跳一次。蜘蛛要跟着走完才知道最终页面,中间每一跳对用户和蜘蛛都是等待。处理办法是把中间层规则改成直接指向最终地址,让链路收敛到一跳。

跳转环

A→B、B→A,或者 A→B→C→A。蜘蛛识别到循环后会停止跟随,但此前投入的请求已经花掉,这个地址也拿不到任何内容。跳转环多数来自配置冲突,比如 CDN 与源站各配了一条方向相反的规则,排查时要两边一起看。

旧地址统一跳首页

这是代价最大的一种。旧的详情页、分类页全部 301 到首页,蜘蛛请求的是具体内容,拿回来的却是首页,这次抓取基本没有产出新信息,也容易让这些地址被当作首页的重复入口。更稳妥的做法是:内容还在,就跳到内容对等的新地址;内容确实删了,用 404 或 410 明确告知,比硬塞首页干净得多。

内链与 Sitemap 里该写哪个地址

内链、Sitemap、canonical 都应当直接指向最终地址,而不是跳转前的地址。

  • Sitemap 里写旧地址,等于让蜘蛛每次都要多走一步才能到达内容。
  • 站内链接指向会跳转的 URL,会让抓取路径变长,尤其在列表页和分页中影响会被放大。
  • canonical 指向一个会跳转的地址,信号传递容易变得含糊,最好直接写最终 URL。

一份简单的自查清单

  1. 抽一批重要 URL,用抓取工具或命令行看跳转层数,超过一跳的记下来。
  2. 检查 http 到 https、www 与非 www 是否只保留一次跳转。
  3. 检查是否存在互跳、循环跳转,CDN 与源站规则是否冲突。
  4. 检查旧 URL 是否被统一指向首页,能否改为对等内容页。
  5. 检查内链与 Sitemap 是否还写着跳转前的旧地址。
  6. 看服务器日志里 3xx 的占比,长期居高不下通常说明规则没有收敛。
跳转是过渡手段,不是长期状态。改版完成、观察一段时间后,应尽量让跳转层数收敛到一跳,并让内链直接指向新地址。

小结

重定向不会直接导致页面无法被抓取,但它会实打实地占用抓取次数、拉长 URL 发现路径。把跳转层数压到最少、让站内链接和 Sitemap 直指最终地址,是成本最低也最容易被忽略的一项基础优化。