站点运营

站点运营:多語言站点的URL發現,別让hreflang代替連結

多語言站点的抓取問题,往往不在翻译质量,而在于蜘蛛是否能顺着連結走到每個語言版本。本文從URL结构選擇、hreflang 的双向要求、語言切換器的寫法、常见跳轉陷阱,到用日誌驗證抓取路径,梳理一套可落地的检查思路。

站点运营

站点运营:多語言站点的URL發現,別让hreflang代替連結

做多語言或多地区站点时,很多人把精力放在翻译质量和 hreflang 标簽的寫法上,却忽略了一個更基础的問题:搜尋引擎的蜘蛛能不能顺着連結,自己走到每一個語言版本的頁面上。hreflang 只是告诉搜尋引擎“這几個頁面是同一内容的語言變体”,它本身不是一條連結,也不會凭空创造抓取入口。如果站内連結结构没做好,标簽寫得再标准,也可能只是躺在那里。

一、先确定 URL 结构,再谈連結

多語言站点常见三種做法,各有取舍:

  • 子目錄:example.com/en/、example.com/de/。所有語言共享同一域名,内鏈最容易互相打通,是多數中小站点的首選。
  • 子域名:en.example.com、de.example.com。适合团队、服務器或 CDN 配置差异較大的情况,但要額外维護子域之間的互鏈。
  • 獨立域名或國別域名:example.de、example.co.jp。地区信号最强,代價是權重分散,且每個站点都要單獨做一轮 URL 發現。

结构一旦确定,後續的連結、站点地图、日誌分析都要围绕它展開。中途更換结构,等于把已经建立的抓取路径推倒重来。

二、hreflang 是注释,不是通道

最常见的誤区是:只在首頁寫了一组 hreflang,就以為其他語言版本已经被“關联”上了。實际上,蜘蛛發現頁面仍然依赖連結、站点地图和外部引用。一组 hreflang 要真正生效,通常需要满足两個條件:

  • 每個語言版本的頁面上,都能看到指向自己和其他版本的双向标注;
  • 被标注的 URL 本身可抓取,返回正常狀態碼,不落在重定向鏈的错誤终点,也不被 meta robots 或 robots.txt 拦截。

如果 A 頁面标注了 B,而 B 頁面没有任何回指,搜尋引擎往往會忽略這组标注,這就是常见的“單向 hreflang”問题。

三、让每個語言版本都能被獨立走到

  1. 語言切換器使用真實的 a 标簽,href 指向對應語言版本的目前頁面,而不是只用 JS 替換文案、或寫入 cookie 後再跳轉。
  2. 頁脚保留静態的語言導航,覆盖全部語言,方便蜘蛛從任意頁面抵達其他版本。
  3. 為每種語言單獨提交站点地图,或在一個索引型站点地图中分文件列出,便于观察各語言的收錄進度。
  4. 适度内容互鏈:同一主题在不同語言下都有獨立文章时,可以在相關位置互指,但不必為了互鏈而堆砌無關連結。
  5. x-default 指向稳定的兜底頁,通常是預設語言版本或語言選擇頁,且這個頁面要能正常抓取。

四、几個容易被忽略的坑

  • 依據 IP 或浏览器語言自動跳轉:用戶和蜘蛛都可能被强制送到某一版本,導致其他語言版本長期没有訪問。更稳妥的做法是给出提示,让用戶自行選擇。
  • 把語言做成 URL 參數:example.com/page?lang=en 這類寫法會让 URL 數量膨胀,參數處理不当還容易造成重复内容。
  • 語言連結只在 JS 中生成:如果服務端返回的 HTML 里没有對應連結,蜘蛛就看不到這些入口。
  • 翻译未完成的占位頁:大量机翻占位頁或空頁面如果被放出連結,會稀释整站质量,建议先不放出入口,或配合合适的狀態碼與 robots 規則處理。

五、用日誌和抓取資料驗證

结构調整完成後,不要只看後台的收錄數字,更直接的判断方式是看服務器日誌:

  1. 統計各語言目錄或子域被訪問的频次,看是否存在某個語言几乎没人抓。
  2. 检查蜘蛛請求的狀態碼分布,重点看 3xx 和 4xx 集中在哪些 URL 上。
  3. 观察切換器連結触發的抓取是否真正到達目标頁,而不是停在跳轉层。
  4. 對比站点地图提交的 URL 與日誌中實际被抓取的 URL,找出長期未被訪問的部分。

這些資料能說明連結通道是否通畅,比任何猜测都可靠。至于市面上各類蜘蛛池工具,它們可以在短時間内制造大量請求,但並不會帮你把站内结构理顺;抓取频次上去了,頁面质量和可用性未必跟得上。

多語言站点的 URL 發現,本质是让每一條語言路径都真實存在、可達、可被观察。标簽是补充說明,連結才是路。