多語言或多区域站点常把同一套内容拆成若干区域 URL,例如 /en/、/de/、/zh-cn/。這些頁面在内容上高度相似,在抓取层面却是各自獨立的入口。当 hreflang 标注、語言切換器與 Sitemap 三處给出的入口不一致时,蜘蛛往往只沿其中一條路径發現並抓取部分版本,其余版本會長期停留在“存在但未被訪問”的狀態。
区域 URL 的三種發現路径
- 内鏈入口:顶部語言切換器、頁脚的区域連結、文章内的跨語言引用。這是最容易被持續抓取的路径,因為入口就長在已被抓取的頁面上。
- Sitemap 入口:把各区域版本寫進同一份或分片的地图。它能补齐没有内鏈指向的頁面,但地图本身只提供地址,並不保證抓取優先級。
- 外鏈入口:其他站点直接連結到某個区域版本。這條路径不受站点控制,容易出現只有某一個語言版本被外部連結带起来的偏差。
三條路径的覆盖范围如果不一致,就會出現典型的發現偏差:英文版被抓得勤,德文版几周才来一次,某些小语種版本則始终没有被訪問過。
hreflang 集群的核對要点
hreflang 本身不是抓取指令,但它能帮助蜘蛛理解多個区域 URL 属于同一组内容,從而在抓取與去重时做出更合理的判断。核對时重点看三件事。
双向回指是否完整
每個区域版本都應列出集群内的全部版本,包括自己。常见错誤是只在英文頁寫上其他語言,其他語言頁却没有任何回指。單向标注會让集群在蜘蛛看来是断裂的,部分版本可能被当成孤立頁面處理。
自引用與 x-default
自引用缺失會让部分解析工具誤判目前頁不属于该集群。x-default 用于指向不区分語言的預設版本,通常给語言選擇頁或主站首頁;如果没有合适的預設頁,宁可不寫,也不要随手指向某個具体語言版本。
代碼與 URL 的一致性
語言碼、区域碼要统一到同一套寫法,URL 必须與最终可訪問地址完全一致:协议、域名、大小寫、尾斜杠都要對齐。标注里寫的是會跳轉的舊地址,等于額外给蜘蛛提示了一條路径。
語言切換器的可见性
不少切換器靠 JavaScript 在交互後才渲染,首屏 HTML 里只有一個下拉容器,里面没有任何連結。這類切換器對用戶可用,對 URL 發現几乎没有贡献。比較稳妥的做法是在首屏 HTML 中保留一份静態連結列表,交互层再在其上增强;至少在頁脚保留一份纯 HTML 的区域連結。
常见偏差與自查清單
- 某些区域版本的狀態碼在 302 與 200 之間混用,抓取路径中途改變了落地地址。
- 切換器指向带參數或带會话标识的临时地址,與 hreflang 中声明的地址不一致。
- 区域版本内容几乎完全相同,没有本地化的标题、價格或联系方式,容易被判為重复。
- Sitemap 只包含主語言版本,其余版本全靠内鏈慢慢發現。
- 某語言目錄下的頁面集中返回 5xx,抓取节奏回落後迟迟没有恢复。
建议的核對顺序
- 先用抓取日誌確認各区域目錄的實际訪問量,找出長期零訪問的目錄。
- 抽检這些目錄下的頁面:狀態碼、canonical、hreflang 是否自洽。
- 检查切換器與頁脚連結在關閉 JavaScript 後是否仍然可见可点。
- 核對 Sitemap 中的区域 URL 與线上最终地址是否逐個對應。
- 確認服務器返回稳定後,再观察日誌中该目錄的抓取是否出現。
多語言站点的抓取問题,多數不是“蜘蛛不来”,而是入口给得不一致。把三條發現路径對齐,比反复提交單個 URL 更值得做。