多語言站点常有一個尴尬:主站頁面几千個都能被正常抓取,語言版本却迟迟不進队列。原因往往不在“蜘蛛不喜欢外语内容”,而在于語言版本從首頁出發的路径本来就比主站遠——切換器藏在角落、目錄结构不统一、Sitemap 只提交了主語言。下面把多語言站点的 URL 發現拆成几個可以動手改的部分。
先决定語言版本怎么组织
三種常见做法的可發現性差別很大:
- 子目錄(example.com/de/):與主站同域名,能繼承主站已有的抓取友好度,内鏈、Sitemap、日誌統計都在一個域下,维護成本最低。
- 子域名(de.example.com):抓取上更接近獨立站点,語言版本需要自己积累入口和連結,新上线时容易被当作新站對待。
- 參數或 cookie 切換(?lang=de):同一路径對應多個 URL,容易产生重复内容,切換结果也常依赖前端脚本,蜘蛛不一定能稳定拿到對應版本。
如果站点規模不大,建议统一到子目錄;已经在用子域名,就要给每個子域單獨准备 Sitemap 和入口連結,別指望主站的抓取记錄會顺延過去。
hreflang 负责說明,不负责發現
常见誤解是把 hreflang 当成語言版本的發現通道。它處理的是“同一内容的多個語言版本该给哪類用戶看”,前提是這些 URL 本身已经被發現、被抓取,标注才有意义。如果 /de/ 目錄從未進入抓取队列,再完整的 hreflang 也只是纸面声明。所以放标注的同时,別忘了用普通連結把語言版本连出去。
語言切換器是主要入口,也是最容易坏的地方
多數用戶和蜘蛛都是從切換器進入其他語言版本的。常见問题有三類:切換器只在首頁出現;連結由脚本拼接而不是可点击的 a 标簽;切換後统一落到語言首頁,而不是目前頁的對應版本。更稳妥的做法是每個頁面都保留一组可点击的語言連結,直接指向同一内容的其他語言版本。這样蜘蛛從任意一篇文章出發,都能横向走到其他語言,而不是每次都退回起点重新找路。
Sitemap 按語言拆分
多語言站点的 Sitemap 有两種寫法:所有語言混在一個文件里,或者按語言(甚至按語言加栏目)拆成多個文件,再用索引文件匯總。後者在排查时更清楚——某個語言版本迟迟没被抓取,可以直接看它那個文件的提交狀態和 lastmod。需要注意的是,Sitemap 里應列出能正常返回内容的 URL,不要把僅做跳轉的中間頁塞進去,否則只會浪費抓取次數。
内鏈不要只往主語言收
不少站点的内部連結預設指向主語言版本,語言版本之間只有顶部切換器一條路,结果非主語言頁面在抓取路径上變成了末端。可以做的調整包括:在相關文章推荐、分類導航、面包屑里按目前語言给出對應語言的連結;跨語言連結保持少量而明确,不必為了凑數量在同一頁面堆几十個語言入口。
服務器與抓取节奏的小提醒
多語言站点常把不同語言部署在不同服務器或 CDN 节点上,其中某個节点响應慢、證书配置有問题,表現出来就是“這個語言一直没被抓取”。定期看各語言版本在服務器日誌里的狀態碼和响應時間,比只盯主站更有意义。新語言版本上线时,先保證它能稳定返回正常頁面、内容完整,再去提交 Sitemap 和补充連結;否則蜘蛛来一次拿到错誤頁,下次重新排队的間隔只會更長。
一份可以照着做的清單
- 確認語言版本使用统一、可预测的 URL 規則,並固定下来,避免中途改结构。
- 每個頁面都有指向對應語言版本的普通連結,不依赖点击脚本触發。
- Sitemap 按語言拆分並提交,索引文件里的每個子文件都可訪問。
- hreflang 双向互指、包含自身,且都指向可抓取的地址。
- 检查各語言版本的服務器响應與證书,避免個別节点拖後腿。
- 用日誌或抓取工具抽查:某語言的新文章,從首頁出發几步能走到。
多語言站点的 URL 發現,说到底還是路径問题。語言版本不會自動跟着主站被看见,它需要自己的入口、自己的 Sitemap,以及一條蜘蛛能走得通的横向路径。