搜索抓取

同一页面的多个 URL 变体:让蜘蛛只用一条路径访问

一个页面能被多个 URL 打开,蜘蛛就可能把它们当成不同地址分别抓取、分别判断。本文梳理常见的 URL 变体来源,说明它对抓取预算和收录判断的影响,并给出用 301、内链写法、Sitemap 与 canonical 收敛入口的具体做法与核对方式。

搜索抓取

同一页面的多个 URL 变体:让蜘蛛只用一条路径访问

同一个页面,往往不止一个 URL 能把它打开。带 www 和不带 www、末尾有没有斜杠、路径大小写不同、带不带跟踪参数,在浏览器里都显示正常,用户看不出区别,但蜘蛛看到的是几个不同的地址。入口一多,抓取预算、收录判断和后续的数据统计都会被分散。

URL 变体通常从哪来

  • 协议与主机名:http 与 https 同时可访问,www 与不带 www 并存,或者带默认端口(:80、:443)的写法也返回 200。
  • 路径写法:/about 与 /about/ 都能打开,大小写混用(/News 与 /news)指向同一页,路径中出现连续斜杠。
  • 查询参数:跟踪参数(utm_ 系列、ref、from)、会话 ID、参数顺序颠倒(?a=1&b=2 与 ?b=2&a=1)、空参数。
  • 编码差异:中文或空格被编码成 %E4%B8%AD 的形式,与可读形式并存且都能访问。
  • 历史遗留:改版后旧目录仍可访问,站内链接有的指向新地址、有的还指向旧地址。

为什么值得花时间收敛

蜘蛛是围绕 URL 排队抓取的。如果同一个页面存在五个可访问地址,它可能按五条记录分别排队、分别重访,原本留给重要页面的抓取额度就被摊薄了。另一方面,多个变体各自被收录时,会形成内容重复,页面之间互相竞争,标签、摘要和外链信号也难以集中到一个地址上。

更麻烦的是排查。日志里同一篇文章出现十几行不同 URL,每行状态码都是 200,你很难判断蜘蛛到底抓了多少真实内容,是抓取不足还是重复消耗。

收敛入口的具体做法

  1. 先定规范地址:确定每个页面唯一对外使用的协议、主机名和路径写法,写进团队的发布规范,而不是每次靠个人习惯。
  2. 用 301 而不是 302:其余变体全部 301 到规范地址,跳转目标直接落地,不要再经过多级跳转。协议和主机名的统一尽量在服务器或 CDN 层完成。
  3. 站内链接写法统一:导航、面包屑、正文内链、分页链接全部使用规范地址,链接里不要顺手带上跟踪参数。
  4. Sitemap 只放规范 URL:提交非规范地址,等于主动把变体送进抓取队列。专题页、活动页上线时同样按这条检查。
  5. canonical 指向自己:规范页面上的 canonical 应自指,非规范地址统一跳到规范地址即可,不要让两边给出互相矛盾的信号。
  6. 参数在源头控制:外部分享、广告投放用的参数尽量在落地时清理,或通过服务端规则让带参地址也跳回规范地址。

怎么核对收敛是否生效

把服务器日志按 URL 归类,统计每个变体的抓取次数和状态码占比,间隔一两周对比一次,看非规范地址的请求是否在减少、301 是否稳定返回。再用站内搜索指令查看是否有重复收录的页面,抽查 Sitemap 中的地址是否都能直达且返回 200。

如果发现某个变体仍在被大量抓取,先看它是不是还有入口:常见原因是旧模板残留的链接、站内搜索或标签页生成的带参地址,以及手机端与 PC 端使用了不同的主机名。

收敛不是一次性的动作。发新内容、改版、上活动页时都可能引入新的变体,把它当成发布流程里的一个检查项,比事后集中处理轻松得多。

URL 变体不会直接影响页面的内容质量,但它决定了蜘蛛把有限的抓取次数花在哪里。入口干净,抓取日志才读得懂,后面的链路诊断和内容优化才有可靠的起点。