在蜘蛛池或入口页运营中,经常遇到一种情况:入口页里放的目标 URL 能正常打开,但目标 URL 自身又返回了 301 或 302,跳到了另一个地址。比如 http 跳 https、带 www 跳不带 www、旧路径跳到新路径。这时搜索蜘蛛从入口页发现链接后,到底会跟到哪一步?入口页的链接还有没有发现价值?
搜索蜘蛛遇到跳转时的基本处理
多数搜索蜘蛛在抓取 URL 时,会像浏览器一样处理重定向。你给它一个地址,服务器返回 301 或 302,并附带 Location 头,蜘蛛会把这个 Location 当作下一步要抓的地址。只要跳转链没有异常,蜘蛛通常会继续抓下去,直到拿到最终返回 200 的页面。
不过,搜索蜘蛛不是无限跟跳。跳转次数太多、跳转成环、跳转到不可访问的地址,都会让抓取提前结束。中间跳转的 URL 一般不会被当作最终内容收录,除非它自身也有独立价值。最终被索引的通常是跳转链末端那个正常返回内容的地址。
几种常见跳转场景
- HTTP 跳 HTTPS:这是最常见的。入口页如果写的是 http 地址,蜘蛛会先抓 http,再跟到 https。最终发现的是 https 版本。建议入口页直接写 https。
- www 跳非 www,或反过来:如果站点做了规范化跳转,最终地址只有一个。入口页写任意一个都可以被发现,但直接写最终地址少一次抓取。
- 旧路径跳新路径:目标 URL 改版后 301 到新地址,蜘蛛会跟到新地址。旧地址如果长期保留 301,可以作为入口被发现,但更稳妥的是更新入口页链接。
- 短链或中间页跳转:有些短链服务会经过 302 中转。蜘蛛可能跟到最终地址,也可能因为中间页有防护、需要 JS 而中断。入口页尽量不用短链。
对入口页链接的影响
如果入口页链接指向的是一个会跳转的 URL,搜索蜘蛛仍然有机会发现最终地址,但过程多了一步。多出来的跳转意味着额外的抓取请求。对于抓取预算有限的小站,或者入口页数量很多的情况,这些中间跳转可能造成浪费。
更关键的是,如果跳转链不稳定,比如最终地址经常变、跳转目标被 CDN 或 WAF 拦截、跳转需要依赖 JavaScript,蜘蛛可能跟不到最终页。这时入口页里的链接看起来存在,实际却没有把蜘蛛带到目标内容。
判断标准:从入口页链接出发,用不执行 JS 的方式访问,看最终返回 200 的地址是不是你要的目标 URL。如果是,说明跳转链路对蜘蛛基本可用。
需要排查的异常情况
- 跳转成环:A 跳 B,B 跳 A。蜘蛛会停在中间,最终地址无法被抓取。
- 跳转到登录页或验证页:目标 URL 因为权限问题跳到登录页,蜘蛛看到的是登录界面,不是你要推广的内容。
- 跳转到 404 或 410:目标 URL 跳到一个不存在的地址,入口页的链接相当于指向死胡同。
- 跳转到其他域名:跨域跳转本身没问题,但如果目标域名被 robots.txt 屏蔽,蜘蛛一样无法继续。
- 跳转链太长:超过三四次跳转后,部分蜘蛛可能放弃,或者把抓取预算消耗在中转地址上。
实操建议
第一,入口页里的目标链接尽量直接写最终 URL,避免依赖跳转来“传递”发现。第二,定期检查入口页链接的跳转链,可以用 curl -I -L 查看状态码和 Location,也可以用浏览器开发者工具的 Network 面板观察。第三,如果目标 URL 必须做跳转,确保跳转规则稳定,最终地址可访问且没有被 robots.txt 或 WAF 拦住。第四,sitemap 和 URL 提交接口可以作为补充,但不要用来替代入口页链接的准确性。
最后,跳转不是收录捷径。搜索蜘蛛跟到最终地址,只代表它发现了这个 URL,能不能被索引还要看内容质量、页面状态和站点整体情况。入口页运营要关注的是:蜘蛛能否稳定、少绕路地到达目标 URL,以及目标 URL 返回给蜘蛛的页面是否正常。