蜘蛛池知识

蜘蛛池入口页的 URL 归一:参数、大小写与结尾斜杠怎么统一

蜘蛛池入口页的重复抓取,很多并不是蜘蛛来得太勤,而是同一页存在多种 URL 写法:跟踪参数、大小写差异、结尾斜杠都会让蜘蛛把它当成多个地址。本文说明这些变体从哪里来、该在服务器层还是模板层处理,并给出一套可以照着走的检查顺序,用来减少无效请求、看清真实抓取情况。

蜘蛛池知识

蜘蛛池入口页的 URL 归一:参数、大小写与结尾斜杠怎么统一

入口页的 URL 形态,为什么值得单独说

蜘蛛池的作用是让搜索引擎蜘蛛持续发现并访问一批入口 URL。如果同一个页面存在多种 URL 写法,蜘蛛很可能把它们当成不同地址反复抓取:日志里的请求数看着不少,实际访问的却是同一份内容。这既占用了抓取额度,也让后面判断抓取情况时看不出真实面貌。

URL 归一不是为了让地址好看,而是为了让蜘蛛的每一次请求都落在真实存在的页面上。

参数:能不带就不带

参数是最常见的重复来源。同一个入口页,挂在不同的查询串后面,对蜘蛛来说就是不同的 URL。

  • 跟踪参数:utm_source、from、ref 这类用于统计或标记来源的参数,最好只出现在对外推广链接里,不要写进页面内链和 sitemap。
  • 排序与筛选参数:?sort=、?page= 这类可以组合出大量变体。如果这些变体页面主体内容基本相同,考虑用 robots 或 canonical 收敛,而不是任由它们铺开。
  • 纯前端状态参数:只为交互服务的参数,尽量改成路径片段,或者干脆去掉。

判断标准很简单:这个参数换个值,页面主体内容是否真的不同?答案是否,就不该让它成为一个可独立抓取的地址。

大小写与结尾斜杠

服务器和部分 CDN 对大小写敏感,/Entry/ 与 /entry/ 可能对应两份缓存,也可能指向同一份内容。结尾斜杠同理:/page 和 /page/ 在不少配置下会各返回一次 200。

处理方式选一种坚持到底即可:

  • 在服务器层做 301 归一,把变体统一跳到选定写法;
  • 页面内所有链接、sitemap、跳转目标统一使用同一写法,不给蜘蛛发现变体的机会。

两种方式可以叠加,但不要一边做 301、一边又在模板里输出另一种写法,否则等于自己制造新的变体。

URL 编码与特殊字符

中文、空格、百分号编码在不同环节容易出岔子。建议入口页路径尽量使用小写英文加连字符,避开中文路径、空格以及需要二次编码的字符。如果确实要用,确保内链、跳转、sitemap 三处的编码方式一致,不要一处用原始字符、一处用 %E4%B8%AD 这样的形式。编码不一致时,蜘蛛会把它们视为两个地址,抓两次,读到的却是同一页。

内链一致性是成本最低的收敛手段

蜘蛛顺着链接走。如果同一个入口页在站内被三种写法链接过,等于主动告诉蜘蛛这里有三个页面。把导航、列表页、正文内链、面包屑里的 URL 统一成一种写法,往往比逐页调整内容更快见效,改模板通常比改内容省事。

一个可以照着走的检查顺序

  1. 从抓取日志里提取被访问的入口 URL,去掉查询串后统计重复情况。
  2. 把重复度高的地址挑出来,确认是参数、大小写还是斜杠造成的。
  3. 先在服务器层做 301 或统一规则,再回头改模板里的链接写法。
  4. 更新 sitemap,只保留归一后的地址。
  5. 过一段时间再从日志核对,看变体请求是否减少。
请求数下降不一定代表抓取变差,很多时候只是把重复的那部分挤掉了。真正要看的是归一后的地址有没有被稳定访问。

容易踩的几个坑

  • 只加 canonical 而不改内链:蜘蛛仍会反复抓取变体,只是信号被合并,日志里的无效请求依然存在。
  • 301 链太长:A 跳 B 再跳 C,蜘蛛跟到中途可能就停止,直接跳到最终地址更稳妥。
  • 改完马上要结论:抓取习惯的调整需要时间,观察窗口太短容易误判方向。

把这些细节固化成模板规范之后,入口页的维护会轻松很多——新增一批 URL 时,不必再逐个检查写法,也更容易从日志里看清哪些地址真正被蜘蛛接受。