搜索抓取

同一内容的多条 URL 变体:蜘蛛会顺着哪条路径抓,线索怎么收回

同一页面出现大小写、尾斜杠、参数顺序、跟踪参数等多种 URL 变体时,蜘蛛会把它们当成多条线索分别抓取,抓取预算被摊薄,规范版本的抓取节奏也难以稳定。本文从变体的常见来源讲起,说明蜘蛛选择路径时会参考什么,并给出用跳转、canonical、内链与 Sitemap 把线索收敛到同一地址的做法。

搜索抓取

同一内容的多条 URL 变体:蜘蛛会顺着哪条路径抓,线索怎么收回

同一个页面,往往不止一个 URL。大小写不同、结尾多一个斜杠、参数顺序颠倒、带上一串跟踪参数,甚至 http 与 https、带 www 与不带 www,都能拼出一条新的访问路径。对用户来说这些差别无所谓,对蜘蛛来说却是实打实的多条线索:它会当成多个地址分别排队、分别抓取、分别判断。抓取预算被摊薄之后,真正需要更新的页面反而排到了后面。

变体是怎么长出来的

常见来源有几类,多数不是刻意为之:

  • 服务器对大小写不敏感,/Page 和 /page 都返回 200;
  • 目录地址带不带尾斜杠都能打开;
  • 参数顺序、空参数、重复参数被原样保留在链接里;
  • 推广链接附带的 utm、ref、from 等跟踪参数被内链或分享带进站内;
  • 同一套内容同时挂在 http 与 https、www 与裸域上;
  • 分页、排序、会话 ID 等参数生成了大量近似地址。

蜘蛛顺着哪条走,取决于你先给它哪条

蜘蛛本身没有偏好,它优先走的往往是你自己指得最多、指得最早的那条路径。如果内链、Sitemap、外部链接指向的版本不一致,它就会在不同版本之间来回切换:今天抓 A,明天抓 B,两条都被标记为“已发现”,但哪条都没有稳定的抓取节奏。更麻烦的是,如果两条路径返回的 HTML 完全一样又没有规范信号,搜索引擎需要自己判断谁是主版本,而这个判断未必和你希望的一致。

把线索收敛到一条路径上

目标很明确:让蜘蛛发现的每一条内部线索,都指向同一个规范地址。

  1. 先定一个规范形态。统一协议、域名形式、大小写、尾斜杠规则,并写进全站链接生成逻辑,而不是靠事后补丁。
  2. 内部链接只指规范版。导航、面包屑、正文内链、分页链接全部对齐,变体只在确实需要跳转的场合出现。
  3. 非规范版用 301 收口。大小写、尾斜杠、www 这类可以完全等价映射的,直接跳到规范地址最干净。
  4. 参数类变体尽量别让它落地。跟踪参数在服务端忽略掉,或统一跳转到无参数地址;无法忽略的用 canonical 指明主版本。
  5. Sitemap 只列规范地址。混入变体会让“已提交”和“已收录”的数字长期对不上。
  6. canonical 要自洽。A 页指向 B,B 页不能又指回 A;canonical 与跳转、与内链指向不一致时,信号会互相抵消。

动手前先摸清现状

  • 看服务器日志里带参数、带大写、带尾斜杠的请求占比,哪些被频繁抓取;
  • 用抓取统计中“重复网页,所选规范网页与用户指定的不同”这类提示定位问题;
  • 站内搜索一段正文标题,看是否有多条地址返回同样内容;
  • 随机抽几条内链,检查它们是否都指向同一形态的地址。
收敛变体不是一次性的清理,而是链接生成规则的一部分。只要站内还在不断产生新的变体,之前做的重定向就会被慢慢稀释。

容易踩的坑

一是把 canonical 当成万能兜底,内链却继续指向旧地址;二是用 robots 屏蔽参数页,结果把有用的筛选页一起挡掉;三是把 301 串成链条,跳两三次才落地,反而拖慢抓取节奏。这些做法单看都合理,叠在一起就容易让抓取路径变得又长又乱。

把入口收紧到一条路径,剩下的才是内容质量和更新频率的比拼。抓取资源有限时,路径清晰本身就是一种效率。