搜索抓取

搜索蜘蛛抓取:URL 大小写、结尾斜杠与默认端口造成的重复发现核对

同一页面出现大小写、结尾斜杠、默认端口、默认文档等 URL 变体时,搜索蜘蛛容易把它们当作多个入口分别抓取,抓取预算被分散,规范页面的信号也容易被稀释。本文梳理这些重复 URL 的常见来源、核对顺序,以及通过服务器重定向、内链统一、Sitemap 与 canonical 收敛入口的实操方法。

搜索抓取

搜索蜘蛛抓取:URL 大小写、结尾斜杠与默认端口造成的重复发现核对

同一个页面在服务器上可能对应多个可访问 URL:带 www 与不带 www、结尾有斜杠与没有斜杠、大小写混用、默认端口显式写出、默认文档 index.html 是否出现。对用户来说这些地址打开的内容一样,但对搜索蜘蛛来说它们是不同的 URL 字符串。URL 发现阶段没有做收敛时,蜘蛛会把每个变体都放进待抓队列,抓取预算被切碎,页面的聚合信号也可能被分散到多个地址上。

重复 URL 的常见来源

  • 大小写:路径中出现大写字母,例如 /Product/ 与 /product/,在区分大小写的服务器或 CDN 规则下会被视为两个地址。
  • 结尾斜杠:/list 与 /list/ 同时返回 200。
  • 默认端口:https://example.com 与 https://example.com:443 都能访问。
  • 默认文档:/about 与 /about/index.html 各自可访问。
  • 编码差异:中文或空格路径出现不同百分号编码形式,例如 %E4%B8%AD 与直接字符形式。
  • 协议与主机名:http 与 https、www 与非 www 同时可解析,且没有强制跳转。

对抓取的实际影响

蜘蛛抓取时通常按 URL 字符串去重,而不是按页面内容去重。变体越多,同一份内容被重复请求的次数越多。表现可能是日志里抓取量不低,但真正有抓取价值的规范 URL 请求数被摊薄;同时,如果各个变体上的 canonical、内链指向不一致,蜘蛛在选代表页时会出现摇摆,入口归属变得模糊。

重复 URL 不会直接导致页面被惩罚,但它会浪费发现和抓取资源,并让页面信号难以集中到唯一地址上。

核对与收敛顺序

  1. 先在服务器或 CDN 层统一主机名与协议:把 www 与非 www、http 与 https 通过 301 跳到唯一形态;跳转目标使用规范主机名,避免跳转链。
  2. 处理端口与默认文档:显式端口和默认文档访问统一 301 到不带端口、不带默认文档的路径;确认重写规则不会与跳转规则互相触发循环。
  3. 统一路径大小写与结尾斜杠:选择一种形式作为规范,其余 301;注意 CDN 回源规则是否区分大小写,避免边缘与源站判断不一致。
  4. 统一站内链接:导航、面包屑、分页、正文内链、分享按钮都使用规范 URL。站内链接是蜘蛛发现路径的主要来源,链接形态不统一会把变体重新带回队列。
  5. Sitemap 只提交规范 URL:Sitemap 中不出现默认文档、显式端口或大小写变体;Sitemap 里的地址应与页面 canonical 一致。
  6. canonical 自引用:规范页面 canonical 指向自身;不要多个变体互相指向形成链式 canonical,也不要把有效页面 canonical 到无关页面。
  7. 复查日志:按路径去重统计变体请求,观察变体是否仍被爬取、301 落点是否稳定、规范 URL 的抓取占比是否变化。

容易忽略的服务器细节

在 Nginx、Apache 或 CDN 重写中,路径匹配可能默认不区分大小写,规则写的是小写路径,实际请求大写时也会命中,结果重定向目标仍是同一个变体,看起来跳了但没收敛。另一种情况是边缘节点做了一次跳转,源站又做了一次跳转,最终指向第三个地址。核对时可以把同一变体从多个网络环境请求一次,记录每一跳的状态码与 Location,确认终点唯一且稳定。

收尾检查

  • 随机抽取若干页面,分别请求大小写、加斜杠、默认文档、显式端口形式,确认都 301 到唯一规范地址。
  • 确认 Sitemap、canonical、内链、hreflang 等声明中的 URL 形态一致。
  • 观察一段时间内的抓取日志,确认变体请求下降,规范地址的抓取趋于稳定。

URL 规范化的目标是让每个内容只有一个可抓取地址。入口收敛后,蜘蛛的发现和抓取可以更多落在真正需要抓取的页面上,后续的内容更新也更容易被对应到正确的 URL 上。