网站收录

大小写、斜杠、参数顺序:同一个页面被拆成多个 URL 之后

同一个页面往往能用好几种 URL 打开:大小写不同、结尾多一个斜杠、参数顺序颠倒、带上追踪参数。这些变体不会自动合并,容易被分别抓取甚至分别索引。本文按处理成本从低到高,讲清站内链接统一、301 归一、canonical 兜底和参数取舍的具体做法。

网站收录

大小写、斜杠、参数顺序:同一个页面被拆成多个 URL 之后

很多站点在统计收录时都会遇到同一个困惑:明明只有一个内容页,索引里却出现了两三条,URL 略有差别,标题和摘要却一模一样。这通常不是页面质量问题,而是 URL 没有归一——同一个页面被拆成了多个地址。

一个页面为什么会变成好几个 URL

下面这些情况,只要站点没有统一约定,就会出现多个可访问地址:

  • 大小写不同:/Article/123/article/123 都能打开;
  • 结尾斜杠:/topic/topic/ 都返回 200;
  • 协议与主机名:http 与 https、带 www 与不带 www 同时可访问;
  • 参数顺序不同:?a=1&b=2?b=2&a=1
  • 追踪与会话参数:utm_、from、sid、ref 等;
  • 排序、筛选、分页参数:sort、filter、page;
  • 带索引文件名的写法:/list/list/index.html

这些变体在服务器看来都是正常请求,于是蜘蛛可能把它们当成不同的 URL 分别抓取。

多 URL 会带来什么实际影响

影响没有想象中那么玄,但确实是可观察的:

  • 抓取被分散:同一份内容要被抓多次,真正需要更新的新页面分到的时间变少;
  • 索引里出现多条:搜索引擎需要判断保留哪一条,判断结果不一定和你期望一致;
  • 外链权重分散:不同人链接到不同变体,信号被拆开;
  • 日志难以分析:抓取统计里同一个页面被算成好几个;
  • 改版时容易漏改:只有部分变体被重定向,旧地址继续可访问。

按成本从低到高处理

  1. 先统一站内链接写法。导航、列表、面包屑、正文内链全部指向同一个版本。这是成本最低、见效最直接的一步,站内链接是蜘蛛发现 URL 的主要入口。
  2. 服务端做 301 归一。把非规范版本(http、无 www、带 index.html、大写路径)永久重定向到规范地址。比起 canonical,301 更硬,也更适合处理协议和主机名这类结构性差异。
  3. 用 canonical 兜底。参数顺序、追踪参数这类难以全部在服务端拦掉的变体,可以在页面里声明规范地址。注意 canonical 是建议不是指令,不要指望它解决所有问题。
  4. 处理追踪参数。外链带来的 utm 参数如果被站内链接继承并继续传播,会生成更多变体。可以在服务端把无用参数剔除后重定向,或在页面内的链接生成时直接去掉。
  5. sitemap 只放规范地址。把变体也写进 sitemap,等于主动告诉蜘蛛这些地址同样重要。

带参数的 URL:哪些该留,哪些该收

影响内容的参数

筛选、排序、分页这类参数会改变页面呈现的内容,通常需要保留,但最好让它们指向一个稳定的组合,避免同一种筛选出现多种参数排列。

不影响内容的参数

追踪、会话、来源标记类参数不改变页面内容,理想状态下不应出现在被抓取的 URL 里。常见做法是重定向剥离,或者用 robots.txt 配合参数处理工具限制抓取。

判断标准很简单:这个参数去掉之后,用户看到的内容是否完全一样。一样就属于可以收掉的一类。

怎么确认自己有多少个变体

  • 在搜索引擎里用 site: 加路径片段,看同一篇内容出现在几个 URL 下;
  • 翻服务器日志,统计同一路径的不同写法各被请求了多少次;
  • 看索引覆盖报告里“重复网页,Google 选择的规范网页与用户指定的不同”这类提示;
  • 随机抽几个页面,手动试 http/https、有无尾斜杠、大小写,确认是否都返回 200。

URL 规范化的目标不是把所有访问方式都堵死,而是让搜索引擎清楚地知道哪一个地址才是主版本,其余的要么重定向过去,要么明确表示不重要。这件事做完,抓取和索引的账才更容易算清楚。