蜘蛛池知识

蜘蛛池入口页的 URL 规范化:大小写、尾斜杠与参数的收口方式

蜘蛛池入口页多为模板批量生成,同一页面常被蜘蛛当成多个 URL 抓取,分散了有限的抓取次数。本文梳理重复 URL 的常见来源,给出规范形式的选定方法、301 与 canonical 的配合方式,以及参数分类处理和落地检查顺序。

蜘蛛池知识

蜘蛛池入口页的 URL 规范化:大小写、尾斜杠与参数的收口方式

蜘蛛池里的入口页往往是模板批量生成的,同一套内容会铺在很多域名上,很容易出现一个页面被蜘蛛当成好几个 URL 的情况。抓取次数是有限的,重复地址越多,真正需要被看到的页面分到的份额就越少,日志里也更难判断蜘蛛到底抓了什么、漏了什么。URL 规范化做的事很简单:把同一份内容固定在一个地址上,其他写法都指向它。

哪些地方容易长出重复 URL

  • 大小写差异:/Page 和 /page 在部分服务器上都能返回 200
  • 尾斜杠差异:/a 和 /a/ 同时可访问
  • 主机名差异:www 与非 www、http 与 https、带与不带默认端口
  • 目录默认文件:/a/ 与 /a/index.html 同时存在
  • 查询参数:utm、来源标记、排序、会话 ID
  • 编码差异:中文路径的百分号编码方式不一致
  • 多余斜杠与点号://a、/./a、/a/../a 这类写法

先定一个规范形式,再让其他写法指向它

规范形式没有标准答案,选一个自己维护起来最省事、也最容易在模板里统一生成的即可。多数情况下是全小写路径、统一尾斜杠规则、固定一个主机名、不带多余参数。

定完之后,把其余写法用 301 永久跳转到规范形式。301 是明确信号,蜘蛛会逐步把老地址替换掉;302 只是临时跳转,容易让两个地址长期并存。

跳转链不要绕圈:A 跳到 B,B 又跳回 A,蜘蛛跟进几次之后往往就不再继续。

参数是最容易失控的一类

入口页本身很少需要参数,但模板、统计脚本、外部引荐都会往地址上挂参数。处理前先分成两类。

影响内容的参数

分页、分类、筛选这类会改变页面内容的参数应当保留,并让每一种取值都有唯一的规范形式。分页建议保留,让蜘蛛能顺着往后走,而不是全部一刀切掉。

不影响内容的参数

utm、ref、from、会话 ID 这类只影响统计、不影响内容的参数,可以用 301 跳回不带参数的地址。如果组合太多太杂,也可以在 robots 里按参数特征整体屏蔽,但要先确认这些地址不是你想让蜘蛛抓的。注意不要一边屏蔽一边又指望它被收录,这两件事是冲突的。

大小写与尾斜杠的细节

  • 服务器不区分大小写时,/AbC 同样可访问,建议在应用层把大写路径 301 到小写
  • 尾斜杠统一之后,链接、sitemap、canonical 里都要跟着改,只改一处没有意义
  • 静态目录的 index.html 建议 301 到目录本身,避免两个地址同时可访问

canonical 能替代 301 吗

canonical 是提示,不是指令,搜索引擎可以采纳也可以忽略;301 是服务器层的跳转,信号更明确。比较稳的做法是两者保持一致:能 301 的用 301,同时把 canonical 指向同一个规范地址。如果 301 暂时铺不开,canonical 至少能先统一信号。

但要避免自相矛盾的情况:A 页面 canonical 指向 B,B 又指回 A;或者 canonical 指到一个在 robots 里被屏蔽的地址。

落地顺序

  1. 先从服务器日志里按请求量排序,找出重复最严重的几类地址
  2. 确认这些地址返回的状态码与内容是否一致
  3. 在模板层统一生成规范 URL,链接、sitemap、canonical 同步修改
  4. 对非规范形式加 301,检查有没有形成跳转链
  5. 观察一段时间日志,看非规范地址的请求是否下降、规范地址的抓取是否稳定
  6. 收口完成之后再考虑扩量

几个常见误区

  • 用 302 代替 301,导致两个地址长期并存
  • 只加 canonical 不改站内链接,页面依旧大量指向非规范地址
  • 对规范地址本身也设了 Disallow,等于把正主挡在外面
  • 参数全部砍掉,连分页也 301 回第一页,蜘蛛反而进不去更深的内容
  • 改完不久又换一套写法,蜘蛛还没处理完,规则又变了

改完怎么看

重点看三件事:非规范形式的请求量是否下降,规范地址的抓取频次是否稳定,日志里的 301 响应是否集中且没有成环。URL 规范化本身不直接带来收录,它做的是减少无效抓取,把有限的机会让给真正需要被看到的地址。这一步做不干净,后面加多少入口页都会被稀释。