不少站点在收录层面卡住,原因不是内容太少,而是同一个页面被搜索引擎当成了好几个地址。差异往往只在一个字母的大小写、结尾有没有斜杠、有没有 www,而服务器对这些写法都老老实实返回了 200。于是这些地址各自被抓取、各自进入索引,之后才轮到搜索引擎去判断它们是不是同一页内容。
常见的几种地址分叉
- 大小写:/About 和 /about 在多数 Linux 服务器上是两个不同路径。如果程序对两者都返回相同内容,就等于对外提供了两个可访问地址。
- 结尾斜杠:/news 与 /news/ 同时能打开,在目录式路径上非常普遍。
- 协议与主机名:http 与 https、带 www 与不带 www,如果四种组合都能访问,一个页面就有了四个入口。
- 默认文件:/index.html、/index.php 与根目录 / 指向同一份内容。
- 历史遗留入口:用过的测试域名、服务器 IP、非标准端口,只要还能打开,就可能被外部链接或旧文档带出来。
搜索引擎会怎么处理这些变体
搜索引擎确实有合并相似页面的机制,会尝试挑出一个主版本,把其他写法当作重复地址处理。但这件事有两个前提:一是它需要先分别抓取这些地址,才能知道内容一样;二是合并属于判断结果,不是即时生效的开关。也就是说,在你把地址统一之前,这些变体已经消耗了一部分抓取机会,也让外链和点击数据被拆散在多个地址上。
所以更稳妥的做法不是指望搜索引擎替你合并,而是别让多余的写法产生。
自查:站点到底暴露了多少个地址
- 翻服务器访问日志,按搜索引擎的 UA 筛选,看它实际抓取过的 URL 有哪些写法变体,重点看路径大小写和结尾斜杠。
- 用 site 查询主域名,观察结果里出现的地址前缀是 http 还是 https、有没有 www,是否统一。
- 手动抽查几条重要页面:把大小写改一下、把结尾斜杠去掉或加上、把协议换一下,看是否仍然返回 200。
这三步做完,通常就能列出一份需要收口的地址清单。
收口的顺序
顺序比手段更重要,先确定唯一形式,再让其他形式向它靠拢。
- 先定规范形式:协议用哪个、主机名带不带 www、路径是否区分大小写、结尾是否统一带斜杠、要不要保留 index 文件名。这一步是站内约定,越简单越好。
- 服务器层做 301:把其他写法永久重定向到规范形式。相比标签提示,服务器返回的重定向是确定性的。
- 站内保持一致:内链、导航、站点地图、canonical、分享按钮里的地址,全部使用规范形式,不要一边 301 一边还在内链里用旧写法。
- 外链尽量修正:能联系到的合作方改过来最好,改不了的部分交给 301 兜住即可。
当页面同时发出互相矛盾的信号时,搜索引擎只能自己猜。301 指向 A、canonical 写着 B、站点地图里又是 C,这种页面往往最难稳定下来。
容易踩的几个坑
- 重定向链太长:http 跳到 https、再跳到带 www、再补一个结尾斜杠,一层层跳会拖慢抓取,尽量一步跳到最终地址。
- 只写 canonical 不做重定向:canonical 是提示,适合作为辅助,不适合替代服务器层的跳转。
- 把跳转用在内部还在用的入口上:内部链接直接改成规范地址更干净,301 留给外部引用和确实过期的旧地址。
- 上线后不再观察:重定向加完,仍要看日志里旧写法的访问是否在减少,索引里的旧地址是否在慢慢替换,这通常需要一段时间。
地址统一是收录里最基础的一层工作,做完不会立刻让排名发生变化,但它能让后续的抓取、数据统计和内容判断都少一层噪音。对中小站点来说,先把这一层理干净,往往比急着增加页面数量更有价值。