搜索抓取

同一个页面的多种写法:URL 变体怎样把抓取量分成几份

同一份内容如果存在 http 与 https、带 www 与不带 www、大小写不同、结尾斜杠有无等多种写法,在蜘蛛眼里就是多个 URL,会各自排队、各自占用抓取额度。本文梳理常见的 URL 变体来源,说明抓取量被摊薄的原因,并给出 301、内链统一、Sitemap 只留规范地址等收敛做法与验证思路。

搜索抓取

同一个页面的多种写法:URL 变体怎样把抓取量分成几份

蜘蛛是按 URL 记账的。同一个页面,只要能用两种写法访问,在抓取队列里就是两条记录:各自排队、各自占用预算、各自回传一份内容几乎相同的 HTML。很多站点觉得抓取量不少,但真正需要更新的页面却迟迟不刷新,问题常常出在这里。

同一个页面常见的几种写法

下面这些差异,人眼看不出来,对 URL 来说却是两个不同的地址:

  • 协议:http 与 https 各自算一条 URL。
  • 主机名:example.com 与 www.example.com 是两条 URL。
  • 大小写:/About 与 /about 在多数服务器上是两个路径。
  • 结尾斜杠:/list 与 /list/ 是否算同一页,取决于服务器配置。
  • 默认文件名:/index.html、/index.php 与目录根。
  • 参数:排序、分页、来源追踪参数的顺序与有无。

单看每一条都不算什么,叠在一起,一个页面可能生出七八个可访问地址。

抓取量是怎么被分掉的

抓取队列里排的是 URL,不是“页面”。当同一份内容有多个地址,通常会发生三件事:

  • 多个 URL 争夺同一份抓取额度,每个都抓得少、更新慢;
  • 内链如果指向不同写法,链接信号被拆到几个地址上;
  • 日志里抓取次数看着不少,按路径去重之后有效页面却不多。

这不一定会立刻带来排名问题,但它会让该被重新抓取的页面排在更后面。

收敛的四步

选定一个规范地址

确定唯一的协议、主机名与路径写法,其余写法一律 301 到它。301 是服务器端动作,比页面里的 canonical 更确定。

内链只写规范地址

导航、面包屑、正文链接、分页链接统一指向同一写法。内链是蜘蛛发现 URL 的主要入口,入口写成什么样,它就记成什么样。

Sitemap 只放规范 URL

Sitemap 是“希望被抓的地址清单”。把变体写进去,等于主动请蜘蛛去抓重复内容。

canonical 用来兜底

canonical 是提示而非指令。当 301 不便实施(例如参数页需要保留)时用它补充,但不要拿它替代 301。

容易被忽略的几个角落

  • 站内搜索、筛选、排序生成的参数链接,是否有对应处理;
  • 分享、广告、邮件里的追踪参数,落地页会不会被记成新地址;
  • 历史链接里的大小写混用,服务器是否统一;
  • CDN 回源时 Host 是否归一,避免同一内容在两套主机名上都可访问。

怎么验证

从日志里按路径去重再看一遍抓取分布:把协议、大小写、斜杠归一之后,统计每个路径被访问的次数。如果归一后的次数明显低于归一前的总和,说明变体确实在分走抓取量。归一之后如果某个路径仍长期不被访问,那更可能是内链或 Sitemap 上的入口问题,而不是 URL 写法问题。

抓取额度不会因为多写了几个地址而变大,只会被摊薄。

URL 写法的统一是一件偏底层的事,不做也不会立刻出问题,但它决定了后续的抓取效率是否被无谓消耗。先把地址收敛干净,再谈抓什么、什么时候抓,会省下不少功夫。