做多语言或多地区站点时,收录问题往往不是“有没有被抓到”,而是版本之间的关系没理清:有的语言版本一直不进索引,有的进了却在搜索结果里互相顶替,还有的干脆只留下默认语言那一版。这类问题排查起来并不复杂,关键是先想清楚一件事——每个语言、每个地区的页面,在索引里都应当是一个可以独立存在的页面。
语言版本不是同一个页面的副本
搜索引擎的索引以 URL 为单位。同一个产品页的中文版、英文版、日文版,只要 URL 不同、内容语言不同,就是三个独立页面,各自需要被抓取、被判断、被收录。hreflang 的作用只是告诉搜索引擎“这几个 URL 是同一内容的不同语言版本,请分别给对应语言的用户”,它不是收录开关,也不会因为你写了 hreflang 就一定收录,更不会自动解决重复内容问题。
三种常见的收录失衡
- 只收录默认版本:其他语言版本的入口链接藏在 JavaScript 语言切换器里,渲染前看不到 URL,这些地址就容易长期停在“已发现”之外。
- 版本之间被当成重复:canonical 写成了跨语言指向,比如英文版把 canonical 写给中文版,搜索引擎就会把英文版合并掉。
- 同一 URL 内容不稳定:靠 IP 或浏览器语言做 302 自动跳转,爬虫每次访问拿到的内容都可能不一样,很难判断这个 URL 到底代表什么。
按这个顺序自查
- 每个语言或地区版本是否有独立、稳定、不带会话参数的 URL。
- 语言切换器是否输出可抓取的 a 标签链接,而不是纯 JS 事件或表单提交。
- 各版本的 canonical 是否指向自身,而不是指向其他语言版本。
- hreflang 是否双向返回、是否包含自身、代码写法是否统一,zh-CN、en、en-US 这类标记不要混着用。
- 站点地图是否按语言分别列出 URL,或至少用对应属性标注版本关系。
- 各版本内容是否只是机翻堆叠,标题、描述、正文有没有做最基础的本地化。
自动跳转与默认版本的处理
按 IP 或 Accept-Language 自动跳转,对真人体验友好,对抓取却容易造成困扰:同一个 URL 返回的内容随访问者变化,爬虫很难确定它的主题,也就更容易被归为重复或低价值。比较稳妥的做法是保留一个明确可访问的默认版本,用页面上可见的语言链接引导用户切换,把选择权交回访问者。
canonical 与 hreflang 的分工
这两个标签常被混用。canonical 解决的是“同一语言、同一地区内出现多条相似 URL 时,哪条算主版本”;hreflang 解决的是“不同语言或地区版本之间的对应关系”。canonical 跨语言指向,会直接压掉另一个语言版本的收录;hreflang 写反了,通常只是不起作用。所以排查时先看 canonical 有没有指错,再检查 hreflang 是否成对出现。
怎么判断多语言收录是否正常
可以在索引报告里按目录或语言前缀分组观察,看每个语言版本是否都有被收录的 URL。如果某个语言版本长期为零,优先回到上面的自查顺序:入口链接、canonical、返回状态。如果各版本都收录了,但反复出现的只是同一个语言,其他语言几乎不出现,问题通常出在链接结构和自动跳转上,而不是内容本身。
语言版本之间的关系理清楚,收录才有讨论的基础。hreflang 只是说明关系,真正的收录仍然取决于每个 URL 能否被稳定抓取、能否被判断为有价值的独立页面。