搜索抓取

多语言站点的 URL 发现:hreflang 集群与区域入口的抓取核对

多语言站点常把同一内容拆成多个区域 URL,若 hreflang 标注、语言切换器与 Sitemap 三处入口不一致,蜘蛛往往只发现部分版本。本文梳理区域入口的可见性、双向标注与状态码核对方法,帮助判断哪些语言版本真正进入了抓取路径。

搜索抓取

多语言站点的 URL 发现:hreflang 集群与区域入口的抓取核对

多语言或多区域站点常把同一套内容拆成若干区域 URL,例如 /en/、/de/、/zh-cn/。这些页面在内容上高度相似,在抓取层面却是各自独立的入口。当 hreflang 标注、语言切换器与 Sitemap 三处给出的入口不一致时,蜘蛛往往只沿其中一条路径发现并抓取部分版本,其余版本会长期停留在“存在但未被访问”的状态。

区域 URL 的三种发现路径

  • 内链入口:顶部语言切换器、页脚的区域链接、文章内的跨语言引用。这是最容易被持续抓取的路径,因为入口就长在已被抓取的页面上。
  • Sitemap 入口:把各区域版本写进同一份或分片的地图。它能补齐没有内链指向的页面,但地图本身只提供地址,并不保证抓取优先级。
  • 外链入口:其他站点直接链接到某个区域版本。这条路径不受站点控制,容易出现只有某一个语言版本被外部链接带起来的偏差。

三条路径的覆盖范围如果不一致,就会出现典型的发现偏差:英文版被抓得勤,德文版几周才来一次,某些小语种版本则始终没有被访问过。

hreflang 集群的核对要点

hreflang 本身不是抓取指令,但它能帮助蜘蛛理解多个区域 URL 属于同一组内容,从而在抓取与去重时做出更合理的判断。核对时重点看三件事。

双向回指是否完整

每个区域版本都应列出集群内的全部版本,包括自己。常见错误是只在英文页写上其他语言,其他语言页却没有任何回指。单向标注会让集群在蜘蛛看来是断裂的,部分版本可能被当成孤立页面处理。

自引用与 x-default

自引用缺失会让部分解析工具误判当前页不属于该集群。x-default 用于指向不区分语言的默认版本,通常给语言选择页或主站首页;如果没有合适的默认页,宁可不写,也不要随手指向某个具体语言版本。

代码与 URL 的一致性

语言码、区域码要统一到同一套写法,URL 必须与最终可访问地址完全一致:协议、域名、大小写、尾斜杠都要对齐。标注里写的是会跳转的旧地址,等于额外给蜘蛛提示了一条路径。

语言切换器的可见性

不少切换器靠 JavaScript 在交互后才渲染,首屏 HTML 里只有一个下拉容器,里面没有任何链接。这类切换器对用户可用,对 URL 发现几乎没有贡献。比较稳妥的做法是在首屏 HTML 中保留一份静态链接列表,交互层再在其上增强;至少在页脚保留一份纯 HTML 的区域链接。

常见偏差与自查清单

  • 某些区域版本的状态码在 302 与 200 之间混用,抓取路径中途改变了落地地址。
  • 切换器指向带参数或带会话标识的临时地址,与 hreflang 中声明的地址不一致。
  • 区域版本内容几乎完全相同,没有本地化的标题、价格或联系方式,容易被判为重复。
  • Sitemap 只包含主语言版本,其余版本全靠内链慢慢发现。
  • 某语言目录下的页面集中返回 5xx,抓取节奏回落后迟迟没有恢复。

建议的核对顺序

  1. 先用抓取日志确认各区域目录的实际访问量,找出长期零访问的目录。
  2. 抽检这些目录下的页面:状态码、canonical、hreflang 是否自洽。
  3. 检查切换器与页脚链接在关闭 JavaScript 后是否仍然可见可点。
  4. 核对 Sitemap 中的区域 URL 与线上最终地址是否逐个对应。
  5. 确认服务器返回稳定后,再观察日志中该目录的抓取是否出现。
多语言站点的抓取问题,多数不是“蜘蛛不来”,而是入口给得不一致。把三条发现路径对齐,比反复提交单个 URL 更值得做。