做多语言或多地区站点的运营者常遇到一种情况:页面被抓取过很多次,索引里留下的版本却不是自己期望的那一版。同一段内容有简体、繁体、英文几个地址,搜索结果只展示一个,剩下的要么被替换,要么慢慢淡出。这通常不是抓取出了问题,而是索引需要一个“代表版本”。
为什么索引里通常只留一个代表版本
从搜索结果的角度看,内容主体相近、只是语言或地区不同的页面,属于同一件事的多个副本。搜索引擎会结合页面本身的完整度、站点的语言声明、内链与外部链接的指向,挑出一版展示,其余版本被折叠或被判定为重复的可能性就比较大。所以多语言站点的收录问题,重点往往不在“有没有被爬到”,而在“站点有没有把版本关系说清楚”。
影响“选哪一版”的几个信号
- hreflang:它的作用是告诉搜索引擎“这些页面面向不同语言或地区的用户”,不是用来指定谁是主版本。几个版本之间需要互相指认、形成闭环,缺一环整组信号都可能失效。
- canonical:当几个地址确实是同一语言、同一内容的重复版本时,用 canonical 收拢到其中一版;不要把所有语言版本都 canonical 到默认语言页,那等于把不同受众的页面当成重复页处理。
- 内容完整度:机器翻译拼接、正文明显短于其他版本的页面,通常更难成为代表版本。
- 内链与站点地图:一个版本在站内几乎没人链接、站点地图里也没有,它被选中展示的机会自然更小。
三类常见的混乱情形
1. hreflang 写了但不成环
A 版指向 B 版,B 版却漏了指回 A 版,或者中间缺了某一版。搜索引擎无法把这几页确认为同一组,只能各自独立评估,重复内容的判断也随之变得随机。
2. canonical 一律指向默认语言页
这种做法等于主动告诉搜索引擎:其他语言版本都是副本。结果是默认语言版长期占据索引,其他语言版本即使有独立受众,也很难拿到展示位置。
3. 用自动跳转代替语言声明
用户一进页面就被脚本跳到“他认为合适的语言版”,蜘蛛看到的却可能是另一个地址。当跳转、canonical、hreflang 三者的指向不一致时,站点实际上没有表达出任何明确意图。
整理时可以按这个顺序推进
- 先确认哪些语言或地区真的有独立正文内容。内容基本一致的版本,考虑合并或收拢,而不是硬拆成多个 URL。
- 把保留下来的版本之间的 hreflang 关系补齐,做到互指闭环,语言代码和地区代码使用规范写法。
- 再处理 canonical:同一语言内部的参数页、排序页、打印页收拢到主版本;不同语言之间不要互指 canonical。
- 站点地图按语言或地区拆分,让每个版本都有明确的发现入口,内链也尽量指向对应语言的主版本。
- 改完之后观察一段时间,看被展示的版本是否趋于稳定,再决定要不要继续精简。
上线前的几项核对
- 每个语言版本的正文是否真的独立成立,而不是关键词替换的产物。
- hreflang 的互指关系是否完整,是否存在指向已删除 URL 的死链。
- 页面上的语言切换入口,指向的是对应版本的真实地址,而不是跳转参数。
- 服务器端是否按用户 IP 强制跳转,导致蜘蛛只能抓到其中一个版本。
多语言收录的难点,从来不是 URL 数量不够,而是版本之间的关系没讲清楚。先把“哪几版该留、谁代表谁”定下来,再谈抓取和提交,效率会高得多。
索引里的版本选择会随内容与链接变化而调整,站点能做的是把自身意图表达得尽量明确、前后一致,剩下的交给搜索引擎判断。定期回看被展示的版本与站内预期是否一致,比盯着抓取次数更有意义。