搜索抓取

URL 规范化与去重:大小写、尾斜杠与默认端口对抓取的核对

同一份内容常因路径大小写、尾斜杠、协议端口和 index 写法的不同,被蜘蛛当成多条 URL。文章梳理这些重复入口造成的抓取浪费与信号分散,并给出一套从抓取日志提取、状态码核对到 canonical、Sitemap 与内链写法统一的检查顺序。

搜索抓取

URL 规范化与去重:大小写、尾斜杠与默认端口对抓取的核对

核对抓取日志时,经常会看到一批长得非常像的 URL:有的带尾斜杠,有的把路径里的大写字母换成了小写,还有的路径后面多了 :443。它们指向的其实是同一个页面。对搜索蜘蛛来说,每个 URL 都是一个独立地址,是否会被合并成一条、抓取资源会不会被摊薄,很大程度上取决于站点有没有把规则表达清楚。

同一份内容为什么会对应多个地址

路径大小写不一致

多数服务器对路径大小写是敏感的,/News/2024 与 /news/2024 可能是两个不同的响应。如果程序在生成链接时大小写不统一,或者外部来源复制了不同写法,蜘蛛就可能分别抓取两条。

尾斜杠的两种写法

带斜杠与不带斜杠的地址,在服务器上往往一个返回 200、另一个返回 301,也可能两个都返回 200。后者最容易造成重复:内容完全一样,但被抓取和索引的地址有两个。

协议与默认端口

http 与 https、80 与 443、带 www 与不带 www,这些组合如果都能直接打开页面,就会形成多条入口。理想状态是只保留一条,其余全部 301 指向它。

目录首页与 index 文件

/about、/about/、/about/index.html 三者若都能返回 200,同样会产生重复。内链里混用这几种写法,会让蜘蛛在多个地址之间来回切换。

重复入口带来的实际影响

  • 同一份内容被多次抓取,占用本该用于其他页面的抓取额度。
  • 外部链接与内链指向的地址不统一,信号被分散到多条 URL 上。
  • 日志统计失真,很难判断某个页面到底有多少真实入口。
  • 页面改版或下线时,需要处理的跳转规则成倍增加。

核对顺序与操作方法

  1. 从抓取日志里按路径提取访问量较高的 URL,做一次去重统计,找出写法不一致的路径。
  2. 逐个请求不同写法的地址,记录返回的状态码、Location 头以及正文是否一致。
  3. 检查站内模板、导航、分页组件生成的链接格式,确认是统一带尾斜杠还是统一不带。
  4. 检查 Sitemap 中的地址写法,确保与站内链接、canonical 保持完全一致。
  5. 确认 canonical 写的是最终保留的那一条,并且使用绝对地址。
  6. 在外部链接建设或投放中,尽量避免直接使用带参数的临时地址。
规范化不是把地址藏起来,而是明确告诉蜘蛛哪一条才是正式入口。多条地址都能访问并不算错误,但没有统一指向,就会让抓取变得低效。

落地时的几条建议

  • 选定一种格式作为标准,例如全部小写、统一不带尾斜杠、统一使用 https 加不带 www 的域名。
  • 其余写法一律 301 到标准地址,跳转一次到位,避免多级跳转。
  • 在模板层统一生成链接,减少人工编辑带来的写法差异。
  • 改动规则后观察一段时间的抓取日志,确认旧写法的访问逐步减少。

规范化是件长期存在的小事,但它决定了抓取资源是花在发现新页面上,还是花在同一份内容的反复确认上。定期抽查日志里的 URL 写法,比等到索引出问题再回头排查要省力得多。