做站点运营时,很多人盯着页面有没有被抓到,却忽略另一个更常见的问题:蜘蛛来了,但一直围着同一批页面转。日志里能看到某些列表页、标签页每天被访问十几次,而新发布的详情页几天都没动静。这通常不是蜘蛛偷懒,而是站内链接结构给了它一条走不出去的环路。
什么样的结构算绕圈
绕圈不是指页面之间有链接,而是指链接把蜘蛛导向一个自我循环、又很难通向新内容的区域。判断标准有两个:一是从这里出发能不能到达站内大部分有效 URL;二是这条路径上的页面本身有没有被检索的价值。两者都不满足时,蜘蛛停留越久,浪费越大。
几种典型的回路
分页的双向链接
- 每页都放首页、末页入口,页码条全量展开,上一页下一页不限方向,蜘蛛可以在第 1 页和第 8 页之间无限往返。
- 列表页与详情页互相回链,形成层级上的死循环。
标签与分类的交叉引用
文章底部列出所属标签,标签页里又列出全部文章,文章再链回标签页。一个词条页可能牵出几百个 URL,而这些 URL 又彼此互链,路径数量迅速膨胀。
全站输出的热门与相关模块
这类模块往往对所有页面输出同一批链接,等于给几个页面做了全站内链,而它们本身并不承担发现新内容的作用。
筛选与排序参数
颜色、价格、排序方式组合出成千上万个地址,每个地址都能被抓,每个地址又带着完整导航,回路就被放大了很多倍。
用日志确认是不是在绕圈
不需要复杂工具,把服务器日志按 URL 聚合,统计一段时间内的抓取次数并排序,看头部是不是大量列表页、标签页、参数页。再看两个指标:新 URL 从上线到首次被抓的间隔,以及高频 URL 的占比。如果前 5% 的 URL 吃掉了一半以上的抓取次数,而它们并不是正文页,基本可以确认存在回路。
抓取次数高不等于被重视,很多时候只是那条路太好走。
把回路拆开的几种做法
- 分页保持单向:只保留下一页和有限范围的页码,减少来回入口,末页不必强行加链。
- 标签页限流:只给有检索价值的标签保留入口,其余标签页不进入主导航、不写进 Sitemap。
- 热门模块控制输出量:一个模块放 5 到 8 条足够,不要全站铺开几十条。
- 参数页区分对待:把排序、筛选组合页与主列表页的入口分开,组合页不主动暴露链接。
- 让 Sitemap 承担告知职责:真正希望被发现的 URL 写进清单,减少对站内链接绕路的依赖。
服务器状态会放大这个问题
当响应变慢时,蜘蛛单次请求耗时变长,同样的抓取额度能覆盖的 URL 更少;如果它又陷在回路里,新页面被发现的时间会被进一步拉长。所以处理绕圈和优化服务器响应,通常要一起做,单改一处效果有限。
一个简单的检查顺序
先看日志头部 URL 是不是低价值页;再看这些页面之间的链接是否互指;然后从导航层开始逐层减少无差别输出;最后观察两周,看新 URL 首次被抓的时间有没有缩短。回路拆开后,抓取次数的总量可能下降,但落在正文页上的比例会上升,这才是更有意义的结果。