重定向在蜘蛛池里的角色
入口页的作用是给蜘蛛一个可抓取的落点,重定向则是把这个落点接到目标页。两者并不冲突,但顺序和方式不同,结果差别很大。不少池子的问题不是蜘蛛不来,而是来了之后被一串跳转送走,抓取预算花在中间环节,目标页反而没拿到几次有效访问。
301、302、307 的差别
- 301 永久重定向:适合入口页确定退役、目标页长期承接的情况。蜘蛛会逐步把原 URL 替换成新 URL,传递的信号相对明确。但入口页如果本来承担着被发现的任务,301 之后它就不再是入口了。
- 302 / 307 临时重定向:适合短期活动、临时维护或测试。蜘蛛一般会保留原 URL 的索引,但传递的信号弱,长期挂着 302 容易让蜘蛛反复回访原地址,浪费抓取次数。307 会保留请求方法,对普通 GET 抓取来说和 302 差别不大。
- meta refresh 与 JS 跳转:渲染能力不同的蜘蛛处理结果不一致,即使能执行,也会多消耗一次渲染资源。作为兜底可以,作为主路径不建议。
重定向链的代价
A 到 B 再到 C 这种多跳,每一跳都要重新发起请求、重新解析和重新排队。蜘蛛的抓取预算有限,链越长,能真正到达目标页的次数越少。更麻烦的是,中间某一跳返回 404 或超时,整条链就断了,而日志里往往只留下第一跳的记录。
建议把重定向控制在一次以内,入口页直接指向最终目标页,不用中转页做统计或跳板。
入口页该不该重定向
如果入口页本身能返回 200、有可读内容、有指向目标页的内链,通常比强制跳转更稳。蜘蛛可以正常抓取入口页,再顺着链接进入目标页,路径清晰,后续也便于调整。
需要重定向的场景主要有几类:
- 入口页确定不再使用,目标页长期替代;
- 域名更换或路径重构;
- 临时活动结束,把访问归到常青页。
反过来,如果只是想“把蜘蛛快速送到目标页”,用重定向替代内链,短期看省事,长期容易让入口页失去被抓取的价值。
几个常见误区
- 全池 302 到同一个目标页:蜘蛛看到的入口页都是空壳,重复度高,目标页也可能被判定为异常集中。
- 重定向目标本身还带跳转:目标页又做了 301,链条被拉得更长。
- 用 JS 跳转但页面无内容:不执行 JS 的蜘蛛只看到空白页,可能直接放弃。
- 重定向目标不可达:入口页返回 302,目标页 404,等于把蜘蛛引到死路。
怎么检查和调整
从访问日志里看入口页的状态码分布,重点看 301、302 的比例,以及跳转后目标页的响应情况。如果发现大量重定向,但目标页抓取次数没有上升,先检查链长和目标页是否可达。用不带 JS 的抓取方式回放一次,确认最基本路径能不能走通。
调整时优先做减法:能合并的跳转合并,能改成内链的改成内链,保留一条最短路径,让蜘蛛每次来访都尽量落在有内容、可继续前进的页面上。