做多語言或多地区站点时,很多人把精力放在翻译质量和 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”問题。
三、让每個語言版本都能被獨立走到
- 語言切換器使用真實的 a 标簽,href 指向對應語言版本的目前頁面,而不是只用 JS 替換文案、或寫入 cookie 後再跳轉。
- 頁脚保留静態的語言導航,覆盖全部語言,方便蜘蛛從任意頁面抵達其他版本。
- 為每種語言單獨提交站点地图,或在一個索引型站点地图中分文件列出,便于观察各語言的收錄進度。
- 适度内容互鏈:同一主题在不同語言下都有獨立文章时,可以在相關位置互指,但不必為了互鏈而堆砌無關連結。
- x-default 指向稳定的兜底頁,通常是預設語言版本或語言選擇頁,且這個頁面要能正常抓取。
四、几個容易被忽略的坑
- 依據 IP 或浏览器語言自動跳轉:用戶和蜘蛛都可能被强制送到某一版本,導致其他語言版本長期没有訪問。更稳妥的做法是给出提示,让用戶自行選擇。
- 把語言做成 URL 參數:example.com/page?lang=en 這類寫法會让 URL 數量膨胀,參數處理不当還容易造成重复内容。
- 語言連結只在 JS 中生成:如果服務端返回的 HTML 里没有對應連結,蜘蛛就看不到這些入口。
- 翻译未完成的占位頁:大量机翻占位頁或空頁面如果被放出連結,會稀释整站质量,建议先不放出入口,或配合合适的狀態碼與 robots 規則處理。
五、用日誌和抓取資料驗證
结构調整完成後,不要只看後台的收錄數字,更直接的判断方式是看服務器日誌:
- 統計各語言目錄或子域被訪問的频次,看是否存在某個語言几乎没人抓。
- 检查蜘蛛請求的狀態碼分布,重点看 3xx 和 4xx 集中在哪些 URL 上。
- 观察切換器連結触發的抓取是否真正到達目标頁,而不是停在跳轉层。
- 對比站点地图提交的 URL 與日誌中實际被抓取的 URL,找出長期未被訪問的部分。
這些資料能說明連結通道是否通畅,比任何猜测都可靠。至于市面上各類蜘蛛池工具,它們可以在短時間内制造大量請求,但並不會帮你把站内结构理顺;抓取频次上去了,頁面质量和可用性未必跟得上。
多語言站点的 URL 發現,本质是让每一條語言路径都真實存在、可達、可被观察。标簽是补充說明,連結才是路。