搜索抓取

同一个页面几种写法:URL 规范形态如何影响蜘蛛的发现与去重

同一个页面,只要内外链接写法不同,对搜索蜘蛛来说就可能是几个独立地址,发现、抓取和去重都会跟着变化。本文从大小写、结尾斜杠、默认文档、主机名、参数顺序等常见差异入手,说明怎么定下唯一形态,并让内链、Sitemap、canonical 与跳转统一指向它,最后用日志核对蜘蛛实际走了哪条路。

搜索抓取

同一个页面几种写法:URL 规范形态如何影响蜘蛛的发现与去重

搜索蜘蛛发现一个新地址,起点不是“页面”,而是“字符串”。同样一个页面,只要内外链接里写成了不同的形式,对蜘蛛来说就可能是两个甚至三个独立地址。发现之后要不要抓、抓几次、算不算重复,都会跟着变。

为什么写法差异会被当成不同地址

蜘蛛没有“看懂”页面的能力,它先记录 URL 字面。URL 里的大小写、斜杠、参数顺序、编码方式只要有一处不同,队列里就是一条新的记录。站内链接不统一时,最容易出现的现象是:明明只有一篇文章,却在抓取数据里看到多个地址各抓了一次,权重也被分散。

这不只是重复抓取的问题,还会牵扯到抓取预算。蜘蛛在同一个站点的额度是有限的,把额度花在“同一页面的多种写法”上,新页面的发现自然就慢了。

最常见的几类写法差异

  • 大小写:/About 与 /about 在多数服务器上是两个地址,页面上链接混用就会分裂。
  • 结尾斜杠:/news 与 /news/ 是否同一页,取决于服务器规则,蜘蛛不替你判断。
  • 默认文档:/about 与 /about/index.html 同时可访问时,两条都会被记录。
  • 主机名:带 www 与不带 www,是彻底不同的域名级地址。
  • 参数顺序:?a=1&b=2 与 ?b=2&a=1 内容一样,字面不同。
  • 编码方式:中文、空格、特殊符号的百分号编码写法不一致,也会产生不同字面。
  • 追踪参数:从外部渠道带进来的 utm 之类参数,会把同一页拆成很多份。

把规范形态定下来,再谈发现

做法不复杂:先确定唯一形态,再让所有出口统一指向它。

  1. 站内链接、导航、面包屑、分页、相关推荐,全部使用同一写法。
  2. Sitemap 只提交规范形态,不要把带参数或大小写混用的版本一起丢进去。
  3. 页面上写上 canonical,指向规范地址;canonical 与内链写法保持一致,不要互相打架。
  4. 其余写法用一条跳转指向规范地址,跳转层级控制在一跳,别串成长链。
规范化的目的不是“让蜘蛛少抓”,而是让它把抓取花在该花的地方。同一份内容被抓一次,就够用了。

用日志和数据核对

规则定完要验证。翻一遍服务器日志,看蜘蛛实际请求的路径里有没有大写版本、index.html 版本、带追踪参数的版本。再看抓取统计里同一个页面对应几条地址。如果发现多条,回到内链和 Sitemap 里找源头。

顺带留意服务器稳定性:如果带斜杠的地址返回 301,而原地址偶尔 5xx,蜘蛛对这条路径的判断会变得犹豫,发现节奏也会受影响。规范化和服务器反馈要一起看。

容易被忽略的两个细节

内链里的相对路径

相对链接本身没问题,但基准地址写错时,解析出的绝对地址可能多出目录层级。上线前抽查几条,确认解析结果就是规范形态。

接口与前端路由生成的地址

由 JS 拼出来的链接,写法往往不统一,还容易带上排序参数。能收敛就收敛;收敛不了,至少保证主动提交和 Sitemap 里是干净的。

URL 规范形态属于基础工程,不会带来立竿见影的效果,但它决定了蜘蛛看到的是几个地址。把这一层理顺,后面谈抓取路径、内链层级、Sitemap 申报才有共同的前提。