搜索抓取

搜索蜘蛛URL发现:大小写、结尾斜杠与编码差异造成的重复入口归一

同一个页面常能以多种 URL 形式被访问,大小写、结尾斜杠、默认文件、协议与参数顺序的差异,会让搜索蜘蛛把它们当成不同入口分别抓取。本文梳理重复入口的常见形态、排查顺序与收敛做法,把抓取集中到规范地址上。

搜索抓取

搜索蜘蛛URL发现:大小写、结尾斜杠与编码差异造成的重复入口归一

同一份内容,在服务器和 CDN 上往往不止一个可访问地址。大小写、结尾有没有斜杠、带不带 www、有没有多余的查询参数,这些差异在浏览器里看起来没区别,但对搜索蜘蛛来说就是不同的 URL。它们会各自进入待抓取队列,各自占用抓取预算,也让日志和报表难以对应到真实页面。

重复入口的常见形态

下面几种形式在站点里出现频率最高,可以照着逐项核对:

  • 大小写差异:/About、/about、/ABOUT 在大小写敏感的服务器上会返回不同结果。
  • 结尾斜杠:/news 与 /news/ 同时可访问,且都返回 200。
  • 默认文件与目录:/index.html、/index.php 与根路径并存。
  • 主机名与协议:example.com、www.example.com、http 与 https 之间的混用。
  • 追踪参数:分享链接带上的 utm 参数、会话参数被蜘蛛抓到并保留。
  • 编码与参数顺序:同一路径的编码写法不同,或 ?a=1&b=2 与 ?b=2&a=1 被视为两个地址。

为什么值得专门处理

重复入口本身不会让页面消失,但会带来几个连锁问题。抓取预算被同一内容反复消耗,真正需要更新的页面排在后面;内链权重被拆散到多个地址上;日志里同一页面出现多行,难以判断抓取频次是否正常;Sitemap 提交的是 A,内链指向的是 B,蜘蛛收到的信号相互矛盾。

排查顺序

  1. 按访问日志把同一内容的多种路径形式分到一起,统计各自被蜘蛛请求的次数。
  2. 抽样请求每种变体,确认返回码与最终落地地址,注意是否出现链式跳转。
  3. 回到模板层,检查导航、面包屑、分页组件和分享按钮生成链接的规则是否统一。
  4. 对照 Sitemap 与站内实际可访问地址,找出只在其中一个地方出现的版本。

收敛做法

目标只有一个:让同一内容对外只暴露一个规范地址。具体可以这样做:

  • 在服务器或 CDN 层用 301 把非规范形式跳到规范形式,一次到位,不要多级跳转。
  • 页面 head 中的规范链接指向最终地址,与 301 目标保持一致。
  • 内链生成规则统一,模板里不要一处带斜杠、一处不带。
  • Sitemap 只收录规范地址,避免把跳转前地址也写进去。
  • 保留一份人工维护的站点地图页作为发现链路的兜底,但链接同样使用规范形式。

服务器与配置上的注意点

  • Linux 环境区分大小写,错误的大小写会变成 404,而不是自动跳到正确页面。
  • 参数处理要有明确策略:无关参数直接重写或忽略,不要原样返回页面。
  • CDN 的重定向与缓存规则需要和源站一致,否则同一地址在不同节点表现不同。
  • 改完规则后抽查几个节点,确认返回码、Location 与最终页面都对得上。

维护节奏

新增页面模板、站点改版、接入新 CDN 这几类变更最容易引入新的重复入口。建议把它们纳入上线检查项:上线后看一天日志里是否出现同一路径的多种写法,出现就尽快收敛。已经存在的旧地址不必全部删除,用 301 长期承接即可,但不要再让它们出现在内链和 Sitemap 中。

URL 归一不是一次性任务。规则定下来之后,真正起作用的是每次改版都有人回头看一眼日志里的入口形式有没有变多。

把发现路径收拢到少数几个规范地址上,抓取效率、日志可读性和内链信号都会稳定一些。这件事不复杂,但需要持续维护。