搜尋抓取

多語言站点的 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 更值得做。