多語言或多地区站点,最容易出問题的地方往往不是翻译质量,而是語言版本之間的信号有没有對齐。搜尋引擎面對同一套内容的两三個語言版本时,需要知道谁是谁的對應頁、哪一版该给哪個地区的用戶看。hreflang 就是干這件事的。它不保證收錄,也不提升排名,但寫错會让蜘蛛在几個版本之間反复横跳,把抓取预算花在互相矛盾的信号上。
先判断是否真的需要 hreflang
只有一套中文内容、面向同一個地区的站点,不需要 hreflang,加了反而多一层出错的可能。真正需要的场景是:同一頁面存在简体和繁体版本,存在面向不同國家和地区的中文站,或者内容一致但語言、货幣不同的分站。判断标准很简單——如果两個頁面的主体内容高度相似,只是面向的人群不同,那就需要给它們建立對應關系。
几種典型的寫错方式
- 只做單向:A 頁面指向 B,B 頁面没有指回 A。這種不對称關系蜘蛛通常直接忽略。
- 語言代碼自造:語言用 ISO 639-1,地区用 ISO 3166-1 Alpha 2,顺序是語言-地区,比如 zh-TW。寫成自造的缩寫,或者标注與頁面實际内容對不上,等于没寫。
- 缺少自指:每個版本都應该包含一條指向自己的 hreflang,很多站点會漏掉。
- 缺少 x-default:没有預設版本时,不知道该把其他地区的訪客送到哪一頁。
- 依赖 JS 動態注入:能渲染的蜘蛛可能讀到,讀不到的只看到一半信号,最好寫在 head 里,或者交给 Sitemap 承载。
- 指向的 URL 本身是 301 或 404:對應關系断在中間。
六步自检流程
- 把所有語言版本的 URL 列成一張表,一行對應一個頁面组。
- 逐個检查组内是否双向對称,並且每一條都包含自指。
- 確認 URL 返回 200,且最终地址與 hreflang 里寫的一致,不要還寫着舊域名。
- 检查每個版本的 canonical 是否指向自己,而不是统一指向主語言版本。canonical 與 hreflang 打架时,通常是 canonical 優先,等于把其他語言版本否掉了。
- 確認 x-default 指向真正的入口頁,一般是語言選擇頁或預設語言版本。
- 如果同时在 Sitemap 里用 xhtml:link 补充声明,两邊的數值要保持一致。
提醒一句:hreflang 只描述對應關系,不解决重复内容。内容确實重复时,先想清楚是要合並成一個版本,還是分語言長期运营。
配合日誌和索引狀態观察
改完之後不要只盯着代碼。去抓取日誌里看每個語言目錄的抓取占比,如果某個版本几乎不被訪問,通常是信号没传過去,或者入口太深。再看索引覆盖,確認是否有版本被当成重复頁排除掉。观察周期给到两到四周,刚提交就下结论容易誤判。
把它變成常態化维護項
新增語言版本时同步补上對應關系;下线某個版本时,记得把其他版本里指向它的那一條删掉。這類工作寫在發布清單里当勾選項,比事後排查省事得多。語言版本不多的站点,一次整理清楚可以管很久。