同一个页面被搜索蜘蛛用三四个不同地址访问,是很多站点在 URL 发现阶段最常见的损耗。发现队列和抓取配额都是有限的,重复地址占掉的位置,本来可以留给真正的新内容。这不是抓取能力的问题,而是地址管理的问题。
重复地址通常从哪来
- 协议与主机名变体:http 与 https、带 www 与不带 www 同时可以正常访问。
- 路径写法差异:结尾斜杠有无、大小写混用、重复斜杠、URL 编码方式不同。
- 参数衍生:排序、筛选、分页,以及 utm、from、ref 之类的追踪参数。
- 功能页面:打印页、独立的移动版路径、把会话 ID 拼在地址里。
- 内容相同但入口不同:聚合页、标签页、站内搜索结果生成的列表页。
这些地址往往都能返回 200,看上去都“正常”,所以平时不容易被注意到,只有在看日志或做覆盖检查时才会集中暴露。
重复地址带来的实际代价
第一是发现机会被摊薄。搜索蜘蛛按地址排队,一个内容占了多条记录,其他新地址进入队列的时间自然往后推。第二是日志判断变难,同一个页面出现多条访问记录,很难说清究竟覆盖了多少实际内容。第三是站内信号被分散,内链、外链指向不同版本,等于把同一份支持拆成几份。第四是后续改版时不容易确认哪个版本是正本,容易在迁移中放大问题。
收敛的几种做法
1. 首选版本只保留一个
协议、主机名、尾斜杠这几类规则,最好在服务器或反向代理层统一,用 301 跳到唯一版本。要避免两套地址都返回 200,那等于默认告诉搜索蜘蛛“这两个都算数”。
2. 用 canonical 声明正本
canonical 是提示而不是强制指令,但仍值得认真写:必须指向可访问的最终地址,不要指向会跳转的中间地址,也不要指向 404。同一批页面里,canonical 的写法要一致。
3. 参数按用途分流
追踪类参数基本没有独立内容价值,可以在服务端忽略,或者跳转到无参数版本。筛选、排序类参数如果确实对应不同的内容集合,再考虑保留;如果只是同一批内容的重新排列,通常会带来大量低价值地址。
4. 内链与 Sitemap 只写正本
站内链接、面包屑、XML Sitemap、RSS,这些入口应当统一指向同一个版本。入口不统一,前面的跳转和 canonical 很容易被反复绕开。
一份可执行的检查清单
- 挑 20 个有代表性的页面,逐个看它们各自有多少个可访问地址。
- 确认 http 到 https、www 到非 www 是否只有一条跳转链,而不是连环跳。
- 检查尾斜杠规则是否在服务器层统一,大小写是否被当作同一地址。
- 把追踪参数整理成忽略或跳转规则,并确认生效。
- 核对 canonical、Sitemap、内链三处指向是否一致。
- 隔一段时间回看日志中 3xx、4xx 与重复路径的比例变化。
验证与长期维护
收敛之后不要期待立刻发生变化。搜索蜘蛛需要重新抓取旧地址,才能看到跳转或 canonical,这个过程通常以周计。更稳妥的做法是把它当成日常习惯:新增一个栏目或功能之前,先决定它的规范地址形态,包括协议、主机名、路径写法和参数策略,再动手上线。已经存在的变体则按优先级逐个处理,先动被内链和外链引用最多的那些。
规范化解决的是“同一个内容别占多个位置”,而不是“让搜索蜘蛛少来”。正本地址本身仍要保证可访问、响应稳定,否则收敛只会把问题藏起来。