做 URL 投放时,常有人问:我在蜘蛛池里只放了一条地址,日志里却看到搜索蜘蛛用好几条不同的地址来抓同一个页面,这算好事还是坏事?多数情况下,这既谈不上好事,也会让抓取变得低效。
多版本 URL 是怎么冒出来的
同一个页面被解析成多个地址,通常不是有人故意为之,而是配置和历史遗留叠加的结果:
- 协议与主机名不统一:http 与 https、带 www 与不带 www,几种组合都能打开同一个页面。
- 结尾斜杠差异:带斜杠和不带斜杠的路径都返回 200。
- 大小写与参数顺序:路径大小写被服务器当成不同路径;跟踪参数前后顺序不同,也会生成新地址。
- 分页、筛选、排序链接:列表页的筛选条件容易批量产出近似地址。
- 内链写法不一致:不同栏目、不同编辑写出来的链接各不相同。
搜索蜘蛛看到多个版本时会怎么处理
搜索蜘蛛不具备“猜”的能力,它是按地址逐个抓取的。同一份内容出现多个地址时,通常会先分别抓取,再判断内容是否高度相似,然后自行选一个作为代表,其余的被折叠或降低处理优先级。
这个过程有两个副作用:一是抓取配额被同一份内容重复占用,本可以用于抓新 URL 的次数被消耗掉;二是指向该页面的链接信号被拆散到多个地址上,每个地址分到的都变少了。
需要注意,去重是搜索引擎自己的判断,不是你写一句 canonical 就一定生效,也不是投放一次就必然被采纳。你能做的是把判断的分支尽量收窄。
先自查:站上到底有几个版本
- 用日志或抓取工具,统计同一路径在不同协议、主机名、结尾斜杠、大小写下返回的状态码。
- 看这些版本是不是都返回 200;如果做了跳转,确认跳转目标是否统一到同一个规范地址。
- 打开页面源码,看 canonical 写的是哪个地址,是否与内链、sitemap 中出现的写法一致。
- 抽查 sitemap 里是否存在同一页面的多条记录。
- 检查蜘蛛池投放的 URL,是否也用了同一套规范写法。
把地址收敛起来的常见做法
- 跳转统一:把非规范版本统一跳转到唯一地址,且跳转链路尽量只有一跳,不要 A 到 B 再到 C。
- canonical 对齐:页面 canonical、sitemap、内链、外链、投放地址,尽量写成同一个字符串。
- 参数收敛:跟踪类参数该忽略的忽略,别让它生成新的可访问地址。
- 内链统一:在模板层统一链接写法,比事后逐条修补省事得多。
- 投放地址统一:蜘蛛池里只放规范地址即可,不必把几个变体都投一遍。
几个容易被忽略的点
把多个变体都投放到蜘蛛池,并不会让页面“被发现得更快”。多数时候只是让搜索蜘蛛多抓几次同样的内容,规范地址那一次并不会因此提前。
- canonical 指向的地址如果本身返回 404 或处于跳转中,等于把信号指向了空处。
- 移动端与 PC 端各有一套地址时,两边的对应关系要写对,不要互相指。
- 改版或换域名后,旧地址建议保留跳转一段时间,而不是直接下线。
怎么判断收敛有没有效果
收敛之后不必天天盯,隔一段时间回看日志即可:同一路径的变体访问次数是否下降、规范地址的抓取是否更集中、sitemap 里的重复条目是否减少。这些变化是渐进的,通常不会在一两天内完成。
多版本 URL 本身不算致命问题,但它会持续消耗抓取资源,让新 URL 的发现节奏变慢。对做站点运营的人来说,把地址写统一,是一件成本低、收益稳定的基础工作。