多語言或分地区的站点,往往同一批内容存在多份 URL。對搜尋蜘蛛来说,這不是一個頁面,而是一组需要分別發現、分別抓取的地址。抓取路径是否清晰,直接决定蜘蛛能不能把各語言版本都走到,而不是只停在預設語言的那一份上。
三種常见结构,蜘蛛走法不同
多語言站点的 URL 组织方式大致有三種,抓取上的注意点也不同:
- 子目錄(example.com/en/、example.com/de/):同一域名下,内鏈和 Sitemap 最容易统一管理,蜘蛛從首頁就能顺着語言切換連結走到各個版本。
- 子域名(en.example.com):抓取和收錄會按站点分別計算,子域之間的内鏈如果很弱,蜘蛛可能長時間只覆盖其中一個。
- 國別域名(example.de):地区信号明确,但各站点彼此獨立,需要各自的 Sitemap、内鏈和服務器配置都到位。
hreflang 不是抓取指令
hreflang 的作用是告诉搜尋引擎,這几個 URL 是同一内容的不同語言或地区版本,它不负责把蜘蛛引到某個頁面。蜘蛛能不能發現這些 URL,仍然取决于它們是否出現在可抓取的 HTML 連結、Sitemap 或其他入口里。常见寫法要求双向互指:A 頁面标注 B,B 頁面也要标注 A,並可用 x-default 指向預設版本。标注寫错、指向 404 或指向重定向鏈,都會让這组關系失效,但不會直接阻止抓取。
被抓取不等于被当作獨立版本收錄
蜘蛛可能把几個語言版本都抓一遍,最终由搜尋引擎判断哪一份作為该語言下的展示结果。如果頁面自己声明了 canonical 却指向另一個語言版本,等于主動放弃這一份的獨立性。多語言站点的 canonical 通常應指向自身,再用 hreflang 處理語言對應關系。
容易让蜘蛛只看到一份的几個做法
- 語言切換靠 JavaScript 或 Cookie 判断,預設 HTML 里只有一種語言,蜘蛛拿到的也是這一份。
- 切換器用 button 或 span 加事件,而不是真正的 a 标簽連結。
- 按 IP 或 UA 直接 302 到對應語言首頁,蜘蛛從不同来源看到不同跳轉。
- 机器翻译版本批量生成,质量低且互相内鏈混乱,抓取预算被摊薄。
让路径更清楚的几個動作
- 每個語言版本都有獨立、稳定、可直接訪問的 URL,不依赖脚本跳轉。
- 語言切換器使用真實的 a 标簽,放在頁头或頁脚等每頁都有的位置。
- 按語言拆分 Sitemap,或在 Sitemap 中一並标注語言對應關系。
- 检查服務器是否按 UA、IP 返回不同的 HTML;對蜘蛛應返回與用戶一致的預設版本。
- robots.txt 不要誤拦某個語言目錄,改名或迁移时同步更新。
服務器與分發這一层
使用 CDN 或地区分發时,確認各語言版本在蜘蛛常用来源地都能正常返回 200,而不是被地区規則重定向或拦截。响應時間過長的版本,抓取频率往往會被压低,覆盖自然變慢。
怎么观察
把服務器日誌按目錄或子域分组,分別看各語言版本的抓取次數與狀態碼分布;對比 Sitemap 中提交的 URL 數量和實际被抓的數量。如果某個語言版本長期没有抓取记錄,先回到内鏈和入口這一层检查,而不是急着調整 hreflang。
多語言站点的抓取問题,多數不是标注寫得不對,而是某一版 URL 根本没有可被發現的入口。