多語言或多地区站点的 URL 總數,通常是單語言站点的數倍。但對搜尋蜘蛛来说,這些頁面不會自動進入队列:它要從某個入口出發,沿着可抓取的連結一层层走到另一個語言版本。語言版本之間如果缺少連結路径,内容即便早就上线,也可能長時間處在“未被發現”的狀態。
蜘蛛發現語言版本 URL 的几條路径
- 語言切換器:用普通 a 标簽指向各語言對應頁面时,這是最直接的發現通道。
- 導航與頁脚:把各語言首頁放進導航或頁脚,能保證站内大多數頁面都有机會把蜘蛛带到其他語言版本。
- Sitemap:按語言分片提交,或在一個 sitemap 中列出全部語言 URL,發現效率通常更高。
- hreflang 标注:它是帮助搜尋引擎理解語言與地区對應關系的信号,並不等于發現通道;标注正确,能让蜘蛛更快理解這些 URL 属于同一组。
語言切換器常见的三個坑
切換器靠脚本渲染
如果切換器是点击後由 JavaScript 生成連結,或者整個下拉菜單由前端框架渲染,蜘蛛在没有执行脚本的情况下就拿不到這些 URL。稳妥的做法是在 HTML 里保留一份可抓取的連結,哪怕样式上不顯示。
依赖 cookie 或 IP 自動跳轉
按用戶語言自動 302 到目标版本,對普通訪客体驗不错,但蜘蛛訪問时往往没有 cookie,看到的可能只是預設語言頁面,各語言版本之間的發現路径就這样断開了。更稳的方式是保留一個可抓取的静態入口,把跳轉限制在用戶主動選擇之後。
切換器只指向語言首頁
如果切換連結统一指向各語言首頁,蜘蛛能發現語言首頁,但進入某個具体内容頁後,往往找不到對應的翻译版本。理想狀態是内容頁之間也有對應連結,或者通過 hreflang 與 sitemap 把對應關系补全。
路径形式對抓取的影响
- 子目錄(/en/…):與主站共享域名,路径结构清晰,通常最容易维護。
- 子域名(en.example.com):需要單獨驗證與提交 sitemap,更容易被当成獨立站点看待。
- 參數(?lang=en):容易被多個參數组合污染,需要配合 canonical 與 robots 規則收敛路径。
三種方式都能被抓取,差別更多在于维護成本和後續路径收敛的难度,而不是“哪種寫法蜘蛛一定更喜欢”。
容易引發重复内容的细节
多語言站点常见的問题不是抓不到,而是同一份内容被当成多個 URL 處理。比如 canonical 全部指向預設語言版本、hreflang 互指时寫错地址、語言版本之間内容高度相似。這些情况不一定直接導致頁面不被抓取,但會让蜘蛛在這组 URL 之間反复判断,抓取节奏和後續表現都容易變得不稳定。
上线後的自查清單
- 關閉脚本执行的情况下,能否從首頁走到每個語言版本?
- 語言切換連結是否指向目前頁面的對應翻译,而不是统一指向首頁?
- hreflang 是否成對互指,且没有指向 404 或重定向地址?
- 各語言 sitemap 是否已提交,lastmod 是否與真實更新時間一致?
- 自動跳轉是否會影响蜘蛛获取預設語言之外的頁面?
多語言站点的 URL 發現,本质上還是“有没有可抓取的連結”。hreflang 能帮助蜘蛛理解頁面之間的關系,但真正把蜘蛛带過去的,通常是切換器、導航和 sitemap 里那几條實實在在的連結。