先确定語言版本放在哪里
多語言站点的 URL 组织通常有三類:子目錄(example.com/en/)、子域名(en.example.com)、獨立域名。對蜘蛛来说,子目錄最容易繼承主站權重和抓取路径;子域名和獨立域名則更像新站点,需要單獨维護入口。如果站点規模不大,尽量用子目錄,把各語言版本统一在同一套内鏈和 Sitemap 下,减少蜘蛛在多個主机之間切換的成本。
hreflang 是注解,不是抓取入口
有些运营者以為加了 hreflang,蜘蛛就會自動去抓另一個語言版本。實际上 hreflang 主要用于告诉搜尋引擎這些 URL 之間的對應關系,它不保證蜘蛛會立即發現或抓取。真正让蜘蛛發現頁面的,還是可点击的連結、Sitemap 和合理的導航。所以 hreflang 要和内鏈、Sitemap 配合使用,不能只寫注解。
双向回指要完整
每個語言版本的頁面,都應在 head 中列出自身和其他語言版本的 hreflang,包括 x-default。如果 A 語言指向 B 語言,B 語言却没有指回 A,搜尋引擎可能忽略這组關系。回到抓取层面,缺少回指时,蜘蛛從一個語言版本走到另一個語言版本後,容易把它当作普通外鏈頁面處理,抓取優先級和识別准确度都會受影响。
内鏈不要只连目前語言
多語言站点常见的問题是:中文頁面只鏈中文頁面,英文頁面只鏈英文頁面,語言版本之間没有横向入口。這样蜘蛛虽然能抓到目前語言,却很难發現其他語言版本,除非 Sitemap 里列了。可以在頁脚或語言切換菜單中保留各語言入口,並确保這些連結是普通 a 标簽,而不是只在 JavaScript 里切換。語言切換器最好直接指向對應 URL,不要用同一個 URL 加參數或 Cookie 来切換。
語言切換如果依赖 Cookie 或浏览器設定,蜘蛛通常拿不到切換後的内容;它看到的仍是預設語言版本。要發現其他語言,必须有稳定的、可抓取的 URL。
Sitemap 按語言拆分還是合並
如果語言版本不多,可以放在一個 Sitemap 里,用 hreflang 注解标明對應關系。如果語言和地区组合很多,建议按語言或目錄拆成多個 Sitemap,再用 Sitemap 索引文件统一提交。拆分的好處是:某個語言目錄出問题时,不會影响其他語言的提交狀態;日誌里也更容易看出蜘蛛對每個目錄的抓取量。
- 每個 Sitemap 只包含同一語言或同一目錄的 URL,不要混合過多主机名。
- lastmod 要真實反映内容更新,不要每次生成都改成目前時間。
- 如果頁面有分頁或篩選參數,不要把參數 URL 大量寫進 Sitemap。
- Sitemap 索引文件提交後,仍要通過内鏈让蜘蛛能走到各語言首頁。
抓取路径上的几個注意点
多語言站点容易产生重复内容:同一篇文章出現在 /zh/ 和 /en/ 下,如果只是机器翻译或内容相近,蜘蛛可能選擇其中一個版本展示。此时要确保各語言版本有獨立價值,而不是简單複製。對于确實重复的頁面,可以用 canonical 指向主版本,但不要把所有語言版本都 canonical 到同一種語言,否則其他語言版本可能不再被抓取。
服務器稳定性在多語言站点上更明顯:如果某個語言目錄响應慢或频繁 5xx,蜘蛛會降低對整個站点的抓取节奏。建议分別观察各語言目錄的日誌狀態碼,不要只看全站平均值。
观察與調整
上线新語言版本後,可以观察日誌中该語言目錄的抓取量是否逐步增加、Sitemap 中的 URL 是否被訪問、hreflang 對應頁面是否都被抓取。如果長時間没有抓取,先检查该語言版本是否有内鏈入口、robots 是否誤屏蔽、Sitemap 是否提交正确。調整时每次只改一個變量,避免同时改目錄、連結和 Sitemap 導致無法判断原因。
多語言站点的抓取路径,核心不是让蜘蛛在所有語言之間乱走,而是给它一條清晰的路线:從主站導航到各語言首頁,再從語言首頁進入内容頁;hreflang 负责說明對應關系,Sitemap 负责补充入口,内鏈负责日常發現。三者配合,蜘蛛才能稳定地覆盖各語言版本。