抓取量上不去时,很多人第一反应是内容不够、外链不足,但日志里更常见的情况是:同一个页面被拆成好几个地址,蜘蛛每发现一个新写法就当成新入口重新走一遍。抓取预算被这些重复入口摊薄后,真正需要更新的页面反而排不上队。
常见的重复入口形态
- 协议与主机名:http 与 https、带 www 与不带 www 都能打开,且都返回 200。
- 大小写与路径写法:/About、/about、/about/ 三种写法各占一个入口。
- 默认文件名:/list 与 /list/index.html 同时可访问。
- 参数顺序与冗余参数:?a=1&b=2 与 ?b=2&a=1 被视为两条 URL,跟踪参数、会话 ID 也会额外生成入口。
- 端口与末尾斜杠:带默认端口、带多余斜杠的地址被保留成独立入口。
这些形态单看都不起眼,叠在一起就可能把一个栏目放大成几十条可抓取地址。
从日志里确认重复
- 取一段完整日志,按路径部分做归一化:统一小写、去掉末尾斜杠、去掉查询串中的跟踪参数。
- 按归一化后的路径分组,统计每组内的实际 URL 数量和各自的抓取次数。
- 把抓取次数高但归一化后属于同一组、且返回状态码都是 200 的地址挑出来,这些就是优先处理对象。
- 对照页面实际内容,确认它们确实是同一份内容,而不是被误判的相似页面。
如果归一化后同一路径对应的 URL 超过两条,通常说明规范化策略没有落地,或者内链里混用了多种写法。
收敛做法
选定唯一形态
站点需要先定一条规则:用哪个协议、是否带 www、是否保留末尾斜杠、参数是否排序。规则定好之后,其余写法统一用 301 指向唯一形态。重定向要直接指到最终地址,避免多次跳转拉长链路。
内链与 Sitemap 同步
- 站内链接、导航、面包屑、分页按钮全部改成规范写法,不要依赖跳转纠错。
- Sitemap 只提交规范地址,避免同一页面在站点地图里出现多次。
- 页面上的 canonical 指向规范地址,与 301 的目标保持一致,不要互相矛盾。
用 robots.txt 屏蔽重复地址看起来省事,但被屏蔽的 URL 如果仍被内链引用,蜘蛛会看到链接却无法抓取,反而增加不必要的探测。能靠跳转和链接统一解决的,不要用屏蔽。
容易踩的坑
- 只改了首页链接,栏目页、标签页、历史文章里仍留着旧写法。
- 用 JavaScript 跳转代替 301,蜘蛛不一定执行,旧入口会继续存在。
- canonical 写成了相对路径或指向另一个重复地址,信号互相抵消。
- 分页、筛选参数直接放开给蜘蛛,页面上又生成大量组合链接。
验证与后续观察
处理完成后,不要只看一天的数据。可以在两周内重复一次日志归一化,观察重复组的数量是否下降、规范地址的抓取占比是否上升、原先被挤占的详情页是否开始出现抓取记录。同时抽查服务器返回,确认跳转链没有变长、没有出现循环跳转。规范化的收益不会立刻体现在排名上,但它能让抓取行为更可预测,后续做 Sitemap 更新、新页面入口铺设时也更容易判断效果。