蜘蛛发现 URL 的路径有很多:外链、内链、Sitemap、主动提交。重定向是其中一条容易被忽略、却经常出现的路径。更换域名、调整目录、合并页面时,旧 URL 往往通过 301 跳到新地址。蜘蛛顺着跳转找到新页面,看似省事,但如果跳转链太长,抓取效率会下降。
重定向对蜘蛛意味着什么
蜘蛛请求一个 URL,如果收到 3xx 状态码,会读取响应头里的 Location,再对目标地址发起一次请求。这个过程会消耗抓取资源。单次跳转通常没问题,链式跳转(A 到 B 到 C 到 D)则会让蜘蛛多花几次请求。最终目标返回 200 时,蜘蛛可能把最终 URL 当作有效地址;如果中途出现 404、5xx 或循环,抓取就可能中断。
多长的重定向链开始变得危险
没有一个适用于所有网站的绝对数字。经验上,超过 3 到 5 次跳转后,蜘蛛放弃或降低优先级的概率会增加。不同搜索引擎的容忍度不同,也和站点整体抓取预算有关。小站、新站更容易受影响。可以这样检查:用 curl 查看跳转链,在浏览器开发者工具的 Network 面板观察请求,或者从 Sitemap 里抽查旧 URL 的最终去向。
常见的重定向问题
- 链式重定向:旧域名跳到旧目录,再跳到新目录,最后才到目标页,每一层都是 301。
- 302 被长期使用:临时重定向如果一直不改成 301,蜘蛛可能继续抓旧 URL,传递的信号也不够明确。
- 重定向到不相关页面:把所有旧文章都跳到首页,蜘蛛会认为目标页与原始 URL 关系不大。
- 重定向循环:A 跳到 B,B 又跳回 A,蜘蛛反复请求,浪费抓取。
- 协议和域名不统一:HTTP 与 HTTPS、带 www 与不带 www 混用,会产生额外跳转。
怎么整理重定向,让 URL 发现更顺
- 把旧 URL 直接 301 到最终目标,减少中间层。
- 统一协议和域名,比如全部使用 HTTPS 且带 www,用服务器配置一次跳转到位。
- 重定向时尽量去掉跟踪参数,避免把一堆参数带到新地址。
- 定期用爬虫工具或日志检查 3xx 比例,重点关注链式跳转。
- 更新内链和 Sitemap,把旧 URL 换成新 URL,减少蜘蛛走重定向的机会。
重定向与 Sitemap、内链的配合
Sitemap 最好只放最终可访问的 200 页面,不要把重定向 URL 放进去。内链也一样,直接指向最终地址。这样蜘蛛不用绕路。如果旧 URL 有外链,保留 301 是必要的,但不要让站内链接继续指向旧地址。站内链接指向旧地址,等于主动让蜘蛛多跳一次。
用日志观察重定向的实际影响
在服务器日志里筛选 301、302 状态码,看看哪些 URL 被频繁请求,跳转目标是什么。如果某个重定向链被蜘蛛反复抓取,说明它还在被发现,需要尽快修正。同时关注抓取频次和状态码比例,如果 3xx 占比偏高,可能挤占有效页面的抓取。
重定向是过渡手段,不是长期结构。让蜘蛛一次跳转到达最终页,比让它连续跳几次更省资源。
URL 发现不只是提交和链接,跳转路径也是其中一环。把重定向链缩短、把协议和域名统一,能减少蜘蛛的无效请求,让抓取更集中在真正需要关注的页面上。