搜尋抓取

搜尋蜘蛛抓取:多語言與多地域版本的入口归属與抓取分配核對

同一份内容做成多語言或多地域版本後,入口數量成倍增加。若 hreflang、canonical、Sitemap 声明與内鏈入口不一致,蜘蛛容易在多個近似地址之間反复往返。本文按声明一致性、内鏈入口、日誌分布三條线索,给出一套可执行的核對顺序。

搜尋抓取

搜尋蜘蛛抓取:多語言與多地域版本的入口归属與抓取分配核對

同一套内容做成多個語言或地域版本後,站点的入口數量會成倍增長。蜘蛛看到的不再是一個頁面,而是若干指向近似内容的地址集合。如果這些地址之間的归属關系没有理清,抓取就會被分散在重复版本上,真正需要更新的頁面反而回訪變慢。

先確認哪些入口属于同一份内容

多數多語言站点會用路径前缀(如 /en/、/de/)、子域(en.example.com)或參數(?lang=en)来区分版本。三種方式對發現效率的影响並不相同:路径前缀最容易被普通連結承载,子域需要額外的解析與握手開销,參數形式則容易被内鏈忽略、也更容易在抓取收敛时被過滤掉。

  • 每個版本頁面是否 canonical 指向自身,而不是统一指向預設語言版本。
  • 預設版本是否用 x-default 做了兜底声明,避免蜘蛛随机挑一個版本当作主版本。
  • Sitemap 中是否把各語言版本分別列出,還是只列了其中一套。
  • 是否存在内容几乎相同、語言代碼却寫错的歷史遗留地址。

三處声明的一致性往往被忽略

語言與地域标注通常同时存在于三個位置:頁面 head 中的 hreflang、HTML 的 lang 属性、以及 Sitemap 里的 xhtml:link 注解。這三處互相矛盾时,蜘蛛只能按較弱的一方處理,结果就是某几個版本長期不被抓取,或者被抓取後迟迟不更新。

  1. 检查 hreflang 是否双向互指,單向声明等于告诉蜘蛛“這邊指向那邊,那邊不認這邊”。
  2. 检查 Sitemap 中的語言注解是否與頁面内的声明一致,包括語言代碼大小寫與地域後缀寫法。
  3. 检查 lang 属性是否與頁面實际内容一致,複製模板後忘记修改的情况相当常见。

内鏈结构决定蜘蛛先看到哪個版本

蜘蛛的抓取顺序很大程度上由内鏈密度决定。語言切換器、導航菜單、面包屑是三個主要入口,它們的位置和寫法直接影响各版本被發現的速度。

  • 語言切換器若用纯前端下拉實現,且連結不带可解析的 href,蜘蛛基本看不到其他版本。
  • 切換器放在首屏之外或只在詳情頁出現,會導致外层列表頁長期只有單一語言版本被收錄。
  • 不同版本之間的内鏈如果各自獨立、互不交叉,站点會逐渐分裂成几個互不相通的入口群。

從抓取日誌看分配是否失衡

按語言前缀或子域把日誌分组統計,通常能看出三類現象,對應的原因也各不相同。

  • 某個版本几乎不出現:入口缺失,或该版本未在 Sitemap 中声明。
  • 某個版本持續被訪問但返回内容從不變化:canonical 或 hreflang 未被识別,蜘蛛仍在试探归属。
  • 所有版本抓取频次同步下滑:多半不是語言结构問题,而要從服務器错誤率、响應耗时和回源稳定性上找原因。

多地域站点的額外變量

地域版本常與 CDN、就近回源、按 IP 判断語言等机制叠加。蜘蛛通常從固定的少數 IP 段發起請求,如果站点按訪問者 IP 返回不同語言,蜘蛛看到的内容可能與真實用戶不一致,進而形成内容错配。更稳妥的做法是让不同地域版本拥有各自明确、稳定、與用戶所见一致的 URL,而不是依赖執行时判断。

一份可执行的核對顺序

  1. 列出全部語言與地域版本的前缀,标注哪些是主推版本、哪些是歷史遗留。
  2. 逐版本確認 canonical 自指向,預設版本額外確認 x-default 声明。
  3. 把頁面 hreflang、Sitemap 注解、lang 属性三方對齐,去掉單向声明。
  4. 確認語言切換器輸出的是带 href 的普通連結,且在各层模板中都存在。
  5. 按前缀分组讀日誌,记錄各版本的發現時間與回訪間隔差异。
  6. 同步观察服務器狀態碼分布與响應耗时,区分是入口問题還是可用性問题。
抓取频次不是固定配額,而是蜘蛛根據站点质量、更新节奏與响應情况動態估算的结果。把入口归属理清楚,比反复提交單個 URL 更有實际意义。

多語言站点的抓取問题,多數不是出在某個頁面上,而是出在版本之間的對應關系上。先用声明和日誌把归属關系固定下来,再谈内容更新與入口扩展,顺序會顺很多。