为什么同一个页面会有多条地址
页面本身只有一个,但站内链出去、Sitemap 里写、外部推广带上的地址可能都不一样。搜索蜘蛛是按 URL 走的,不同 URL 就是一个新地址,它会分别发现、分别抓取、分别判断。发现入口越多,重复的那部分就越容易被放大。
最常见的几类重复来源
- 营销追踪参数:utm_source、from、ref 之类,渠道一多,同一条链接能生成几十个版本。
- 会话与用户标识:sessionid、sid、uid 出现在 URL 里,几乎每次访问都可能生成新地址。
- 排序与筛选参数:?sort=、?order=、?page= 在列表页上随手就能拼出大量组合。
- 缓存与调试参数:v=1、时间戳,上线时为了绕开缓存加上,之后忘了去掉。
- 大小写、斜杠、默认页:这类属于地址形态不统一,常常和参数问题一起出现。
重复发现会带来什么成本
抓取配额是有限的。同一份内容被几十个地址访问,花在别处的请求就少了。更麻烦的是判断:日志里几千条记录看起来像几千个页面,真实页面只有几十个,排查问题时很难看出哪里出了状况。此外,当 Sitemap、内链和 canonical 各自指向不同版本时,传给搜索蜘蛛的信号本身就是矛盾的。
处理顺序:先看日志,再动手
- 从服务器日志或搜索后台的抓取统计里,找出请求次数最多、路径相同只是参数不同的那一批 URL。
- 确认哪个是规范版本:一般是不带任何参数、和页面内容一一对应的那个地址。
- 页面上的 canonical 指向规范版本,并且这个标签要能在源码里直接看到,不要依赖脚本后期写入。
- 站内链接和 Sitemap 统一写规范版本,别再顺手带上追踪参数。
- 如果某些参数组合确实没有独立内容价值,可以用 robots.txt 的 Disallow 或搜索后台的参数设置工具处理,但要先确认屏蔽后不会挡住真正需要被抓取的地址。
- 改完观察一到两个抓取周期,看重复 URL 的请求量是否下降,而不是当天就下结论。
几个容易做过头的地方
不要一刀切屏蔽所有带问号的地址
站内搜索、分页、部分筛选页本身可能是有价值的入口,粗暴屏蔽会连带影响这些页面被发现。更稳妥的做法是先分清楚哪些参数会改变页面内容,哪些只是记录来源。
canonical 和实际入口要一致
如果 canonical 写的是 A,内链和 Sitemap 都在推 B,搜索蜘蛛更容易相信它实际抓到的那个。三者对齐,比单点优化更有效。
外链上的参数不必强行回收
别人怎么做链接你控制不了。能做的是让自己站内的入口保持干净,让规范版本在内链和 Sitemap 里得到足够多的指向。
重复地址的治理是收敛入口,不是消灭所有参数。目标是把抓取和判断集中到少数几个地址上,而不是把所有带问号的链接都堵死。
小结
同一页面出现多条地址,多数时候来自自己站内的入口写法。先把日志看清,确定规范版本,再让 canonical、内链、Sitemap 三处保持一致。收敛是一个持续的过程,渠道活动、埋点调整都可能重新引入参数,需要定期回头看一眼。