搜索抓取

同一个页面多个地址:重复 URL 会让蜘蛛白抓几遍

蜘蛛按 URL 记账,同一个页面若能从 http/https、带不带 www、尾斜杠、渠道参数等多个地址打开,抓取次数就会被重复消耗,链接信号也被分散。本文梳理重复地址的常见来源、在抓取日志与回爬判断上的具体影响,并给出 301、canonical、内链与 Sitemap 的处理顺序和自查清单。

搜索抓取

同一个页面多个地址:重复 URL 会让蜘蛛白抓几遍

蜘蛛是按 URL 记账的。对搜索引擎来说,不同的 URL 就是不同的页面,哪怕它们返回的内容完全一样。当一个页面能通过多个地址打开,站点就会在抓取队列、抓取日志和权重判断上重复记账:抓取次数被摊薄,主地址的更新信号被稀释,日志里也很难看清哪些地址才是真正需要维护的。

重复 URL 通常从哪里冒出来

多数站点不是主动制造重复地址,而是若干技术细节叠出来的:

  • 协议和主机名不统一:http 与 https、带 www 与不带 www 都能访问,且没有做跳转。
  • 路径收尾不一致:列表页 /list 和 /list/ 都返回 200。
  • 大小写混用:服务器区分大小写时,/About 和 /about 会算成两条地址。
  • 渠道参数:utm、gclid、fbclid、ref 每投一次推广就生成一批新地址。
  • 筛选与排序参数:sort、order、filter、price_min 组合出大量地址。
  • 会话类参数:sessionid、sid、时间戳、随机数。
  • 功能页面外泄:打印页、移动版、短链、站内搜索结果页被外链或分享带出去。

抓取层面的实际影响

  • 抓取次数被重复消耗,新内容分到的抓取机会变少。
  • 日志噪音变大,看哪些 URL 被抓过时,很难判断主地址的真实表现。
  • 外链与内链权重分散到多个地址上,单个地址的链接信号被削弱。
  • 回爬判断混乱:同一内容在几个地址上的更新节奏不同,蜘蛛难以确认哪个版本是最新的。
  • 选错主地址:如果站点自己都没明确指向哪个版本,主地址可能不是你以为的那个。

处理顺序:硬信号在前,软信号在后

先做能让地址真正合并的动作,再做只是表态的标注。

  1. 能跳的一律用 301:http 到 https、非 www 到 www、带参数到不带参数,一次性跳到最终地址,避免多跳。
  2. 不能跳的用 canonical:指向自己确认的主地址,且主地址本身要能正常返回 200。
  3. 内链统一写法:站内所有链接都写成同一个形式,别在导航里用不带斜杠、正文里用带斜杠。
  4. 站点地图只保留主地址:把跳转地址、参数地址、重复地址从 Sitemap 里清掉。
301 是替代关系,canonical 是建议关系。能跳转的重复地址,优先用 301 收拢;实在不能跳转的,再用 canonical 说明。

可以按这个顺序自查

  1. 从抓取日志里统计带参数的 URL 占比,看看重复地址有没有被大量抓取。
  2. 用几个典型地址测试:换协议、加 www、去掉尾斜杠,看是否都跳到同一个最终地址。
  3. 抽查页面的 canonical 是否自指,是否指向了实际返回 200 的主地址。
  4. 检查内链、Sitemap、RSS 里的地址写法是否一致。
  5. 清理重复地址后,观察一段时间内日志中主地址的抓取比例是否上升。

几个容易踩的坑

  • 用 canonical 代替 301。两者强度不同,能跳转的地址不做跳转,等于让蜘蛛自己去猜。
  • 用 robots 屏蔽参数地址。规则写得太宽可能把带参数的主内容页一起挡掉,连发现都成问题。
  • 把分页全部 canonical 到第一页。后续页面的内容不再被单独看待,深层链接也失去作用。
  • canonical 指向的主地址本身还会跳转或返回非 200。指向一个打不开的地址,等于没有表态。
  • 清理时不看日志,凭感觉删。先确认哪些地址真的被蜘蛛抓过、哪些有外链,再决定怎么处理。

重复 URL 不会立刻让站点出问题,但它会持续消耗抓取机会,也让运营者看不清站点的真实抓取情况。把地址写法收拢到一套规则上,是提升抓取效率里成本较低的一件事。