网站收录

URL 参数与跟踪码:哪些该挡在发现入口之外

同一段内容因为带了不同参数变成多个地址,是收录问题里很常见的一类。这篇文章按参数的性质分类,讲清哪些参数该保留、哪些该在发现阶段就挡掉,以及 robots.txt、canonical 和内部链接分别该承担什么角色,并给出一份可照着走的自查顺序。

网站收录

URL 参数与跟踪码:哪些该挡在发现入口之外

一个页面如果有三种排序方式、两种视图模式,再加上投放带上的跟踪码,同一个内容就可能对应十几个不同的 URL。搜索引擎发现、抓取、判断重复,都要为这些地址花时间。处理参数不是为了把 URL 变得好看,而是让有限的抓取预算用在真正有内容的地址上。

先分清楚三类参数

不同参数的性质差别很大,处理方式也不一样,动手前先归类。

功能型参数

分页、筛选、分类切换这类参数会真实改变页面内容,典型如 page=2、category=shoes。它们通常有保留价值,尤其是分页,但仍需保证每页有可索引的正文,而不是只换了一批列表项。筛选组合容易爆炸的站点,要考虑是否让部分组合页可抓、其余用 canonical 或 robots 收敛。

会话与跟踪参数

sessionid、utm_source、gclid、fbclid 这类参数不改变内容,只记录来源或身份。站内链接里出现它们,几乎只会制造重复地址。投放落地页需要带参数是正常的,但站内导航、面包屑、文章正文里的链接不应该带。

展示型参数

sort、view、layout、theme 这类参数只改变排序或外观,内容主体相同。它们通常不值得单独收录,可以用 canonical 指向默认版本。如果排序确实对用户有用,考虑用路径而不是参数来实现,或只保留一两种高频排序。

处理顺序:先判断,再动手

常见的错误是先屏蔽,再发现该 URL 其实是有价值的。建议按下面的顺序走:

  1. 抓一份站内近期的 URL 样本,按参数名分组,看哪些出现频率最高。
  2. 对每组参数,访问带参数和不带参数的两个地址,比较正文、标题、主要链接是否一致。
  3. 内容一致的,优先在内部链接层面消除,让站内不再产生这类地址。
  4. 内容有差异但价值低的,考虑用 canonical 集中信号;已经收录的观察一段时间再决定是否屏蔽。
  5. 确认完全无价值且不会从外部大量进入的,再考虑 robots.txt 屏蔽。
  6. 改完后看抓取日志里这类 URL 的请求量是否下降,再判断下一步。

别急着用 robots.txt 一刀切

robots.txt 屏蔽能阻止抓取,但阻止不了发现。如果站外有大量链接指向被屏蔽的参数 URL,这些链接带来的信号会被浪费,而搜索引擎仍然会记录这些地址存在。更麻烦的是,被屏蔽 URL 上的 canonical 指向也不会被读取,反而让重复信号更难收敛。

屏蔽适合处理“不该被抓”的地址,不适合处理“抓了但想合并”的地址。后者应该用 canonical 和内部链接来解决。

内部链接才是最该先改的地方

外部链接带跟踪码难以控制,但站内链接完全在自己手里。站内链接是搜索引擎发现 URL 的主要来源,改这里见效最快。

  • 导航、面包屑、分页、相关推荐里的链接,去掉所有跟踪参数。
  • 分享按钮生成的链接,不要直接写进页面 HTML 的 href 里。
  • 站内跳转用 301,而不是带参数的中间页。
  • sitemap 只放规范 URL,不要放带参数版本。
  • canonical 与 sitemap、内部链接指向保持一致,不要三个地方三种写法。

一份简单的自查清单

  • 站内是否还在产生带 utm 或 sessionid 的链接?
  • 分页、筛选页是否有独立正文,还是只有列表?
  • canonical 是否指向默认版本,并且自身可抓取?
  • 被 robots.txt 屏蔽的 URL 上,是否还挂着 canonical 或大量外链?
  • 改完之后,抓取日志里这类地址的请求比例有没有变化?

参数处理没有一次性完成的说法,站点在迭代,新的参数会不断出现。比较稳妥的做法是把它当成一项常规检查,在新功能上线前问一句:这个参数会不会产生一个新的、内容相同的 URL。