网站收录

多语言站点分语言核对收录:canonical、hreflang 与切换入口的检查顺序

多语言站点的收录要对每个语言版本分别核对,而不是只看总索引量。先确认各语言有独立可抓取的 URL,再检查 canonical 是否自指、hreflang 是否双向回链,最后看语言切换入口是否用可抓取的链接。任何一环缺失,都可能让某一门语言长期进不了索引。

网站收录

多语言站点分语言核对收录:canonical、hreflang 与切换入口的检查顺序

多语言站点做收录核对时,最容易犯的错误是把所有语言当成一个整体看。用一次 site 查询看总量,数字似乎对得上,实际上可能是某一门语言被索引了几千条,另一门语言一条都没有。收录状态是按 URL 计算的,而每个语言版本通常都是独立 URL,所以核对必须按语言拆开做。

先确认每个语言版本都有独立可抓取的 URL

常见的三种结构里,子目录和子域相对稳妥:

  • /en/、/zh/ 这类子目录,配置简单,也便于统一管理;
  • en.example.com 这类子域,隔离性好,但需要单独验证并单独配置站点地图;
  • ?lang=en 这类参数,容易被折叠或误判为同一页面的变体,排查成本最高。

无论选哪种,都要保证每个语言版本在关闭 Cookie 和 JavaScript 的情况下也能直接打开,返回 200,正文是该语言的真实内容。如果站点靠浏览器语言或 Cookie 自动跳转,爬虫很可能只看得到默认语言那一版,其他语言永远不会被独立发现。

canonical 与 hreflang 要能对上

这一段最容易出错,核对顺序建议是:

  1. 每个语言版本的 canonical 指向自己,而不是统一指向默认语言。如果所有语言都 canonical 到 /en/,其他版本基本等于主动放弃收录归属。
  2. hreflang 必须双向回链。A 页面写了指向 B,B 也要写回 A,单向标注通常不会被采用。
  3. hreflang 的代码和地区写法要规范,en、en-US、zh-Hans 各有含义,不要自造写法。
  4. 如果存在默认兜底页,用 x-default 标注,而不是让某一种语言兼职。

做完这几步后,挑两个语言版本各看一次页面源代码,确认输出的是这一版自己的地址,而不是模板里写死的默认语言 URL。

语言切换入口要是可抓取的链接

不少站点的语言切换是一个下拉框,靠 JavaScript 提交或跳转。人能用,爬虫用不了。更稳妥的做法是在页头或页脚放一组普通的 a 标签链接,指向各语言版本的首页或当前页的对应版本。这样每个语言版本都能通过站内链接被发现,而不只依赖站点地图。

语言版本之间的互链,本质上也是一条内链路径。入口越清晰,各语言被独立发现的机会越多。

按语言的收录核对清单

  • 分别用 site 查询或索引报告,记录每种语言的收录数量,不要只看总数;
  • 每种语言各抽 3 到 5 个页面,检查是否被索引、展示的 URL 和语言是否正确;
  • 检查站点地图是否按语言拆分,或至少正确标注了 hreflang;
  • 在服务器日志里看各语言目录的抓取频次,长期为零的目录通常说明发现路径断了;
  • 比对语言版本之间的正文差异,机器翻译或只换几行文案的版本,容易被当作重复内容处理。

几种常见的异常表现

某一门语言只有首页和分类页进了索引,内容页几乎没有,通常指向内链或站点地图的问题;几个语言版本互相被替换展示,多半是 canonical 和 hreflang 打架;新增加的语言长期零收录,先回头看切换入口是不是可抓取的链接,再确认新语言用的是不是独立 URL。

多语言站点的收录问题很少是单一原因造成的,但排查顺序是固定的:先确认 URL 能被独立发现和抓取,再看归属信号是否自洽,最后才去比较内容差异。跳过前两步直接改内容,通常解决不了问题。