网站收录

参数、会话 ID 与追踪码:同一个页面被拆成多个地址后的收录处理

同一个页面因为追踪码、会话 ID、排序筛选参数被拆成好几条地址,是收录环节里很常见的一类麻烦。本文讲清这些地址是怎么产生的、蜘蛛大致会怎么处理,以及用 canonical、跳转与 noindex 把它们收敛回一条规范地址时,哪些做法容易踩坑。

网站收录

参数、会话 ID 与追踪码:同一个页面被拆成多个地址后的收录处理

同一份内容,为什么会出现好几个地址

一个页面在理想情况下只对应一条地址,但下面这些写法会让它一变多:

  • 分享和推广链接自带的追踪码,例如 utm_source、from、spm 之类;
  • 把会话标识写进地址,例如 sid、PHPSESSID、sessionid;
  • 列表页的排序、筛选、视图参数,例如 order=price、color=red、view=list;
  • 打印页、移动页、AMP 页各占一条地址;
  • 大小写、结尾斜杠、空参数(如 ?a=1&)这类细节不一致。

对用户来说,这些地址打开的几乎是同一屏内容;但对蜘蛛来说,它们是各自独立的 URL,会分别进入抓取队列,分别判断,分别决定要不要收录。

蜘蛛大致会怎么处理

各家搜索引擎的策略并不完全公开,但结果通常落在三种情况里:

  • 只保留一条,其余被当作重复版本折叠掉;
  • 收录多条,但每条能分到的内容价值被摊薄;
  • 判断这些地址没有单独价值,抓一次之后不再反复来访。

真正麻烦的不是“会不会被收录”,而是抓取量被一堆无意义地址消耗掉,同时后台显示的收录数量和索引状态也变得难以解读。

先做三件事,把问题看清楚

  1. 查规范标签:直接打开带参数的地址,看返回的 canonical 指向哪里,是否和预期一致。
  2. 看日志:统计蜘蛛抓取的 URL 中带参数的比例有多高,是否存在大量同一路径、不同参数的记录。
  3. 抽样搜索:用 site: 加上参数特征,看有多少参数页真的进了索引。

能收敛的收敛,收敛不了的明确表态

追踪码与会话 ID

会话 ID 尽量不要再放进地址,改用 cookie 承载。追踪码很难完全避免,别人分享时就会带上,可行的做法是:页面正常返回,canonical 始终指向不带追踪码的规范地址;同时内链和站点地图里只使用干净地址,避免自己再制造新的变体。

排序、筛选与分页

并不是所有参数组合都值得被索引。可以按下面的顺序判断:

  1. 本身有独立搜索需求的筛选组合(例如“城市 + 品类”),可以保留,并给它一条可抓取的内链入口;
  2. 只是换个排列顺序的(价格升序、销量排序),canonical 指向默认视图就够了;
  3. 组合爆炸、内容稀薄的,可以考虑 noindex。这里不建议简单用 robots.txt 屏蔽——屏蔽之后蜘蛛看不到页面上的 noindex,反而更容易留下状态模糊的记录。

移动页、打印页与 AMP 页

这些通常是同一内容的另一种呈现。确认是等价版本,就用 canonical 指向主版本;如果已经不再使用,返回 301 指向主版本,而不是继续留着可访问。

几个容易踩的坑

  • canonical 指向的地址本身返回 404 或带 noindex,等于把信号指进了死路。
  • canonical 形成链条:A 指 B,B 又指 C,蜘蛛需要多跳判断,容易放弃。
  • 一批参数页用 robots.txt 屏蔽,另一批用 noindex,规则互相打架。
  • 只改了站内模板,没管历史链接,站外推广链接依旧带着旧参数在传播。
参数问题的本质不是“地址太多了”,而是没有告诉蜘蛛哪一条才算数。

收尾时的一句话

先把规范地址定下来,再让 canonical、内链、站点地图、跳转这几处保持一致,剩下的交给时间。一次改完所有参数并不现实,分批次观察抓取日志的变化,比一次性大动更稳妥。