
語言切換器的 SEO:選單怎麼做才不擋爬蟲、不破壞 hreflang
語言切換器的正解是「一組爬蟲讀得到的純文字 <a> 連結」,指向各語言版的絕對網址,且不強制依 IP 自動跳轉。 如果你的切換器是 JavaScript 下拉、onchange 導航或依訪客 IP 自動改語言,Googlebot 與 AI 爬蟲很可能根本看不到其他語言版本,導致那些頁面收錄不全、hreflang 回連斷裂、繁簡互相蠶食——整套多語架構等於白做。
為什麼切換器的實作方式會決定其他語言版能不能被收錄?
爬蟲發現多語頁面有兩條路:一條是 hreflang 標註,另一條就是頁面上實際的內部連結。這兩條路最好互相佐證。問題在於,很多切換器把「連到其他語言版」這件事藏進了爬蟲讀不到的地方:
- JS 下拉選單:語言選項寫在
<select>或<div>裡,靠onchange/click事件跳轉。爬蟲看到的是一個沒有href的控制項,抓不到目標網址。Googlebot 雖會渲染 JS,但渲染有預算與延遲,AI 檢索爬蟲多半根本不執行 JS。 - IP 自動跳轉:偵測到訪客來自中國就強制轉到簡中版。Googlebot 幾乎都從美國 IP 抓取,於是永遠只看得到英文版,其他語言目錄形同不存在。Google 官方明確不建議依 IP 自動轉址。
- Cookie/
Accept-Language自動切換:爬蟲不帶語言 cookie、Accept-Language也常是預設值,結果同一個 URL 對爬蟲與真人回傳不同內容,除了收錄問題還踩到「差異化投放(cloaking)」的灰線。
只要其他語言版沒有一條可爬的連結進入,Google 對那組頁面的信心就低,hreflang 的雙向回連也可能被判定不完整而被整組忽略。
三種語言切換器做法比一比
| 做法 | 爬蟲讀得到其他語言版? | 對 hreflang 的影響 | 主要風險 | 建議 |
|---|---|---|---|---|
純文字 <a href> 連結(每個語言一個絕對網址) |
是,直接可爬 | 與 hreflang 互相佐證,最穩 | 幾乎無 | ✅ 正解 |
JS 下拉/onchange 導航 |
不一定(靠 JS 渲染,AI 爬蟲多半讀不到) | 內部連結訊號缺失,回連可能不完整 | 其他語言版收錄不全 | ⚠️ 需退化為可爬連結 |
| 依 IP 強制自動跳轉 | 否(Googlebot 用美國 IP,只看得到一個版本) | 其他語言目錄幾乎不被抓取 | 大量頁面等於隱形 | ❌ 避免 |
Cookie/Accept-Language 自動改內容 |
否(同 URL 回不同內容) | 訊號混亂 | 觸及 cloaking 灰線 | ❌ 避免 |
結論很直接:能不能被收錄,取決於切換器有沒有留下一條「不需執行 JS、不需特定 IP」就能跟隨的連結。 動畫、下拉 UI 都可以保留,但底層一定要是真的 <a href>。
正確實作:五個步驟
- 每個語言選項都是真的
<a href>:切換器展開後,每一個語言都對應一個<a href="https://example.com/zh-hant/pricing/">繁體中文</a>這樣的絕對網址。要炫的下拉動畫沒問題,但 DOM 裡必須存在這些連結,而非只在點擊時才由 JS 產生。 - 連到「對應頁」而非一律回首頁:在定價頁按下英文,應該去英文版定價頁
/en/pricing/,不是/en/首頁。一律導回首頁會流失情境,也讓內部連結對不上 hreflang。 - 與 hreflang 一一對映:切換器列出的語言集合,要和該頁 hreflang 標註的語言集合完全一致(含自我參照與
x-default)。切換器有簡中、hreflang 卻沒有,兩邊訊號打架。 - 不要強制 IP 自動跳轉:可以在偵測到疑似語言不符時,用一條可關閉的橫幅「建議切換到簡體中文?」,但預設仍停在使用者請求的 URL,把選擇權交回使用者與爬蟲。
- 加上
hreflang與lang屬性輔助:切換器連結可加hreflang="zh-Hans",並確保頁面<html lang="…">正確;這對無障礙與爬蟲判讀都有幫助(但它輔助、不取代<head>裡的 hreflang 標註)。
驗證:怎麼確認切換器沒擋到爬蟲?
- 關閉 JavaScript 看原始碼:在瀏覽器停用 JS 或直接看「檢視網頁原始碼」(非 Inspector 的已渲染 DOM),確認其他語言的
<a href>真的存在於初始 HTML。 - 用 GSC 網址檢查看「已檢索的 HTML」:看 Googlebot 實際抓到的原始碼裡有沒有那些語言連結。
- 切到別的地區看會不會被強制跳轉:用 VPN 或改語言偏好,確認網站沒有無視你請求的 URL、直接把你甩到另一個語言版。
- 對照 hreflang 清單:抽 3–5 頁,核對「切換器列出的語言 = hreflang 標註的語言」,且各自指向可收錄的最終網址(非 404、非轉址、非 noindex)。
常見問題(FAQ)
Q1:語言切換器一定要放在每一頁嗎? 建議是。切換器本身就是一組全站性的多語內部連結,放在共用的頁首或頁尾,能讓爬蟲從任一頁都發現其他語言版,強化 hreflang 的回連。只放在首頁,長尾內頁的其他語言版就少了一條被發現的路。
Q2:用 JavaScript 下拉選單一定不行嗎?
不是「不能用 JS」,而是「不能只有 JS」。下拉 UI 可以保留,關鍵是底層 DOM 要有真正的 <a href>,讓不執行 JS 的爬蟲也能跟隨。純靠 onchange 事件跳轉、DOM 裡沒有連結的做法才是問題。
Q3:偵測到訪客語言後自動跳轉,Google 會怎麼看? Google 官方不建議依 IP 或瀏覽器語言強制自動轉址,因為 Googlebot 多從美國、以預設語言抓取,會被鎖在單一版本,導致其他語言收錄不全。正解是給出可關閉的「建議切換」提示,而非強制跳轉。
Q4:切換器要不要對每個語言連結加 hreflang 屬性?
可以加,但它是輔助。連結上的 hreflang="zh-Hans" 有助爬蟲與無障礙判讀,卻不能取代 <head> 或 sitemap 裡那組正式、雙向回連的 hreflang 標註。兩者搭配、集合一致才完整。
Q5:切換器該連到對應頁還是首頁? 連到對應頁。在文章 A 按下另一語言,就去該文章 A 的對應語言版;找不到對應頁時才退回語言首頁。一律導回首頁會流失使用者情境,也讓內部連結與 hreflang 對映不上。
把切換器做成可爬的文字連結,只是多語架構的一環;真正決定繁簡會不會互搶排名的是底層的 hreflang 標註是否正確。想確認你的標籤有沒有漏回連、漏自我參照,可用 GeoSeoToday 的 hreflang 產生器與 GEO 檢測工具。基礎觀念請先讀〈hreflang 是什麼?多語言站必備教學〉,整體策略見支柱頁〈多語言 / 國際 SEO 完整指南〉。