蜘蛛在站内爬行时,并不是只走一次就结束。它会根据链接反复回访,也会把同一个页面以不同 URL 反复抓取。如果站内链接存在回环,蜘蛛就会在几个页面之间绕圈,把抓取次数花在已经看过的内容上,新页面反而排到后面。
回环和重复链接常见来源
回环通常不是单一原因造成的,而是导航、分页、筛选和归档叠加的结果。比较常见的几种情况:
- 分页导航里同时出现“上一页”“下一页”“首页”“尾页”,并且这些链接互相指向,形成无休止的循环。
- 筛选和排序参数生成大量组合 URL,同一批内容被拆成很多条路径。
- 标签页、归档页和日历导航互相引用,任意日期都能跳到任意月份。
- 打印版、移动版、AMP 版没有指向主 URL,蜘蛛把每个版本都当成独立页面。
- 会话 ID 或跟踪参数被写进内链,蜘蛛每抓一次就得到一个新的 URL。
用日志确认蜘蛛走了哪些重复路径
先看服务器访问日志,按用户代理筛选蜘蛛请求,记录 URL、状态码和抓取时间。把 URL 按模板归类,比如列表页、详情页、筛选页,然后统计同一模板下被抓取的 URL 数量和频次。如果发现大量参数变体、同一内容对应多个 URL,或者某些页面被抓取的次数远高于更新频率,就说明抓取路径里有回环或重复。
也可以结合站内链接图,从首页出发模拟蜘蛛走几层,看看哪些页面被多条路径指向。路径越多,蜘蛛重复到达的概率越高。
内链与 Sitemap 的收敛做法
处理回环的目标不是把链接删光,而是让蜘蛛用更少的路径覆盖更多有效页面。可以按下面几步做:
- 给每条内容确定一个主 URL,其他变体用 canonical 指向主 URL。
- 分页只保留必要的“下一页”和“上一页”,避免所有页码全量互链。
- 对筛选参数、排序参数和会话参数,结合 robots.txt 或 noindex 处理,但不要屏蔽掉用于发现内容的主路径。
- Sitemap 里只放主 URL,不放参数变体和重复版本。
- 面包屑、导航和侧栏尽量指向栏目主路径,减少随机跳转。
服务器稳定与抓取节奏
回环多的时候,抓取请求数会明显上升。服务器如果响应变慢或频繁返回 5xx,蜘蛛会降低抓取频率,甚至暂时放缓整站抓取。所以收敛路径的同时,也要看服务器状态:保持响应时间稳定,避免在抓取高峰出现超时。对参数页可以适当限速,但不要把正常内容路径一起挡住。
验证与持续观察
调整之后,继续看日志里重复 URL 的比例有没有下降,新发布的页面是否更快被蜘蛛发现。如果重复抓取减少,但重要页面反而抓不到,说明收敛过度,需要把关键入口加回来。
不要为了减少重复而屏蔽重要入口。先确认哪些路径是蜘蛛发现新 URL 的主要通道,再去掉真正造成回环的链接。