搜尋抓取

多語言站点的抓取路径:蜘蛛怎么找到並区分各個語言版本

多語言站点的次要語言版本長期不被抓取,往往不是服務器問题,而是入口断了。本文梳理蜘蛛發現語言版本的几種途径、hreflang 與内鏈各自的分工、URL 结构對抓取路径的影响,以及 canonical 與 hreflang 冲突带来的常见問题。

搜尋抓取

多語言站点的抓取路径:蜘蛛怎么找到並区分各個語言版本

多語言或多地区站点常见的困境是:主語言頁面抓得挺勤,其他語言版本却長期停留在“已發現未抓取”。問题往往不在服務器,而在于蜘蛛從入口到各語言版本的路径不通,或者被自身的規范化設定绕晕。

蜘蛛從哪里發現語言版本

蜘蛛不會“翻译”頁面,它只是沿着連結和文件清單走。多語言站点的語言版本,通常通過以下几個入口被發現:

  • Sitemap:每個語言目錄如果有獨立的 sitemap,蜘蛛可以直接從清單拿到 URL,不必依赖内鏈。
  • HTML 連結:導航栏、頁脚、語言切換器里真實可点的連結。
  • hreflang 标簽:标注各語言版本之間的對應關系。
  • Sitemap 中的 hreflang 标注:與頁面上的 hreflang 同源,只是表達位置不同。

hreflang 不是抓取入口

很多人以為頁面上寫了 hreflang,蜘蛛就會顺着它去抓其他語言版本。實际上 hreflang 的主要作用是告诉搜尋引擎“這几個 URL 是同一内容的不同語言版本,請分別展示给對應語言的用戶”,它更接近一種關联声明,而不是一條可点击的抓取路径。真正把蜘蛛带進語言版本的,仍然是 HTML 里的連結和 sitemap 里的 URL。

所以會出現這種情况:A 語言頁面在 hreflang 里指向 B 語言,但 B 語言頁面没有任何站内連結指向,sitemap 里也没列,结果 B 語言版本迟迟不被抓取。稳妥的做法是让 hreflang、sitemap 和站内連結三者指向同一批 URL。

語言切換器最容易断鏈

語言切換器是蜘蛛進入其他語言版本最自然的入口,也是最容易出問题的地方:

  • 用 JS 下拉菜單渲染,切換項在原始 HTML 里根本不存在;
  • 切換器只保留目前頁面的語言版本,其他語言需要用戶操作後才生成連結;
  • 切換器鏈到語言首頁,而不是目前頁面的對應語言版本,導致深层内容缺少入口;
  • 切換器連結被加上 nofollow,或放在被 robots.txt 屏蔽的路径下。

把切換器寫成一排普通連結,並尽量让它指向目前頁面的對應語言版本,深层頁面的語言版本才會有稳定入口。

URL 结构决定抓取路径的分叉方式

子目錄

例如 /en/、/jp/ 這類结构,主域權重集中,站内互鏈方便,蜘蛛從首頁就能走到各語言目錄。缺点是所有語言版本共享同一套域名下的抓取资源,某個語言目錄内容多时容易挤在一起。

子域名或獨立域名

例如 en.example.com,抓取上更接近獨立站点,需要各自准备 sitemap,也更容易出現某個語言站長期抓取量偏低。此时跨語言互鏈和 hreflang 的准确性會更關键。

小心語言版本互相抢占

canonical 與 hreflang 冲突,是多語言站点最常见的自伤方式:hreflang 说“這是英文版”,canonical 却指回中文主版,等于告诉蜘蛛這個英文 URL 不是獨立頁面。结果是蜘蛛要么不抓,要么抓了也不長期保留。两者要保持一致:canonical 指向自己,hreflang 指向對應語言版本。

判断标准很简單:把每個語言版本当成獨立頁面来對待。它有自己的 URL、自己的内容、自己的内鏈入口和 sitemap 记錄,就不容易被当成重复内容處理。

上线前後可以做的检查

  1. 關掉 JS,看語言切換器里是否還有可点击的連結;
  2. 抽查几個深层頁面,確認每種語言都有對應 URL,且能通過站内連結到達;
  3. 確認每個語言目錄的 sitemap 已提交,且其中 URL 可以正常訪問;
  4. 检查 hreflang 是否成對出現,返回連結是否完整;
  5. 確認 canonical 與 hreflang 不互相矛盾;
  6. 观察服務器日誌里各語言目錄的抓取分布,找出長期没有蜘蛛訪問的目錄。

多語言站点的抓取問题,多數不是抓取速率不够,而是路径本身不通。把入口补上、把規范化設定理顺,剩下的交给時間。