ZhenheAI

多語網站語系網址如何互相對應?建立 hreflang 抽查流程

用頁面清單、內容配對、雙向回指、錯配分類與切換實測,建立可重做的 hreflang 抽查紀錄。

主題情境插畫:多語網站語系網址如何互相對應?建立 hreflang 抽查流程

多語網站的語系切換錯頁,常不是少了標籤而已:可能是配錯內容、缺少回指,或前端切換器回到首頁。本文只檢查搜尋引擎可辨識的語系網址關係,以及使用者實際切換後的落點;不處理譯稿核對。Google 不使用 hreflang 或 HTML lang 偵測頁面語言,而依頁面內容判斷;標記用來指出同一內容的語系版本,詳見Google 的多語頁面標記指引。依序建立清單、配對、回指、找錯、實測與保存紀錄,讓每個結果都能回查。

實作步驟:建立語言頁面清單;配對相同內容頁;檢查互相回指關係;標出缺漏與錯配;測試語系切換目標;保存抽查日期結果

建立語言頁面清單

抽查前先定義範圍,否則只看首頁或少數文章,很容易漏掉產品頁、分類頁和沒有對應語言的內容。從網站地圖匯出列出的網址,再和內容管理系統或既有頁面清單比對;網站地圖適合當起點,不等於完整清單。每列至少記錄網址、頁面識別碼、目前狀態、主要語言、頁面類型、canonical,以及負責確認的人。若頁面會依地區顯示不同價格或條件,也把目標地區記在獨立欄位,別把語言和地區混為一談。

抓取到的路徑前綴可以當線索,不能單獨當語言判定。打開頁面檢視主要文字、導覽和內容主旨,確認它實際呈現的語言;網址含 /en/ 不代表正文一定是英文,lang 屬性或 hreflang 也不能取代可見內容判斷。再標註頁面是否應該有其他語系版本:已確認有對應、尚待確認、目前沒有翻譯頁,或刻意只供特定市場使用。這能避免把「沒有建立」誤記為「標籤漏了」。

例如,新文章路徑在三種語言各有一頁,就先建三筆清單並給相同的暫定群組代碼;若某一產品只有中文頁,保留一筆且註明「無現有對應」,不要自行配到英文首頁。清單完成後先挑近期新增、改過路由及流量入口頁作抽查樣本,並保留全部清單供後續補查。如此能說清楚本次檢查涵蓋哪些頁型、哪些尚未納入,也方便問題修正後回到原列驗證。

整理網址時保留原始值,再另列標準化網址;把 http/https、網域別名、尾斜線、大小寫和追蹤參數分開觀察,別在匯入時先合併,否則會把真正不同的路徑藏掉。遇到清單與 sitemap 不一致,就記為待查,而不是直接刪除其中一筆。

配對相同內容頁

配對要回答的是「這兩個網址是否承載同一個頁面意圖」,不是「它們的 slug 看起來像不像」。先用穩定的內容 ID、原始頁面 ID 或人工指定的群組碼把版本放一起,再核對標題主題、解決的問題、資訊層級、主要行動與受眾。語言不同可以改用在地詞彙、單位或例子;但若一頁介紹定價,另一頁卻是分類總覽,就算網址只差語系前綴也不該硬配。若是英國與美國版本,還要確認價格、配送或條款差異確實對應各自地區,而不是只把 hreflang 改成 en-GB、en-US。

以下是假設同一篇教學有三種版本的清單,網址僅示意,不代表實際網站:

語系標籤 假設網址 配對確認
zh-TW https://example.com/zh-tw/guide/hreflang 同一教學,繁中
en https://example.com/en/guide/hreflang 同一教學,英文
ja https://example.com/ja/guide/hreflang 同一教學,日文

配對前先驗證語言代碼是語言加可選地區,而不是自行發明縮寫;台灣繁中可用 zh-TW,簡中可用 zh-CN,只指定一般英文則用 en。地區不是語言本身,例如同為英文的兩個市場可以各有版本,代碼應反映頁面實際服務的對象。把每一組的「相同主題證據」寫一句,遇到沒有同等內容的版本就保持未配對,留給內容負責人決定是否新增頁面。正式設定前,也可核對Google Search Central 支援的語言與地區代碼。

配對不是要求逐字一致;關鍵是讀者到另一頁仍能完成相同目標。反過來,同一個 slug 被不同內容重用時,不能因路徑相同便放進同一組。遇到首頁、文章、產品頁等不同頁型,分開建立對照,不要以整站語系總表猜每一頁都有等價版本。把群組碼與每頁原始 ID 一併保留,改版後才能追溯配對來源。內容經過在地調整時,也把差異點註記在群組列,讓後續檢查知道這是刻意調整,而非錯誤配對。

檢查互相回指關係

配對表確認後,才逐頁檢查 hreflang 的清單是否一致。每個版本都要列出同一群組的其他網址,也包含自己;檢查不能只看中文頁有沒有連到英文頁,還要從英文頁反向確認中文頁存在。若甲頁列出乙頁,乙頁卻沒有回列甲頁,搜尋引擎可能不採用這組標記。這不是每種語言都得有完整版本:沒有對應頁就不要塞入相近但不同的內容,先確保實際存在的版本能互相回指。Google 的多語頁面標記指引也要求每個版本包含自身與對應版本,並以雙向連結形成一致組合。

可將結果視為一張有方向的檢查表:每列是一個來源頁,每欄是一個預期語系;來源頁上的標記就是「實際指向」。逐格比對網址,不要只比語系代碼或頁面數量。例如三個版本理應形成三乘三的組合,每頁都列出三個有效網址,其中對角線是指向自己的項目。用爬取結果、頁面原始碼或 sitemap 檢查都可以,重點是確認實際輸出的標記,而非只相信後台設定。

標記可放在 HTML head、HTTP header 或 XML sitemap;同一網站若使用多種方法,抽查時要確認各處表達相同配對,避免不同版本各有一份過期清單。HTML 標記要放在 head,href 要是完整網址,語系代碼要對應目標頁。若用 sitemap,則逐個網址列出相同的替代版本組合。檢查記錄中標明採用的實作位置,之後維護者便知道要回到哪一層修正。

實際核對時可從一頁逐一開啟每個替代網址,再在目標頁搜尋來源網址是否回列;也可用表格標示該組預期版本數和已找到數。若某一版本的輸出漏了自己的網址,該頁仍需補上自我標記,不能以其他頁完整就判全組通過。

標出缺漏與錯配

把錯配拆成「頁面不存在、指向錯頁、標示錯語系、關係不完整」四種,修正時才知道該找誰。先逐一開啟每個 href,確認不是錯字、404、重新導向到首頁或其他主題;同時記錄最終落地網址,避免表面連結正確,實際卻被轉到不同頁。接著對照頁面可見內容與標記語系:英文標記不能只因 URL 有 /en/ 就算通過,正文若仍是中文,應列為語系不符。相似商品、不同地區方案或上層分類頁也不能拿來補缺,因為讀者點進去會失去原本的任務脈絡。

再檢查自我指向、回指和重複項目。常見狀況包括少列一個現有版本、同一網址用了兩個語系標記、大小寫或斜線規則造成重複、參數網址混入清單,以及某個地區碼其實指向另一地區的內容。若頁面宣告的 canonical 指向另一種語言,先確認它是不是重複網址或錯誤設定;各語言版本若是不同頁面,不要為了「統一」就把它們全部 canonical 到主語言。可對照Google 的 canonical 指引,釐清重複頁面偏好網址和語系替代標記處理的是不同關係。

每個問題都要寫「預期、實際、證據、處置」:例如預期英文頁回指繁中頁,實際回到英文分類頁,證據是來源頁的標記與目標頁標題。把錯誤分為會讓讀者落錯內容、標記不完整、格式或路徑不一致,先修影響閱讀的錯配,再修成批產生的模板問題。若遇到沒有翻譯頁,不要直接判錯;標為「尚無對應」,由內容負責人決定維持單語、補頁,或從 hreflang 組合中省略。

若錯誤集中在同一路徑或同一頁型,就另記受影響的頁面集合,避免只修抽到的單頁;每次修正都用原本列出的預期網址重新檢查,不以「程式已改」代替目標頁真的載入正確。

測試語系切換目標

搜尋引擎標記正確,不代表頁面上的語系切換器也正確;兩者要分開測。從每個抽查頁面實際點選另一語言,確認仍停留在相同主題、相同產品或同一流程步驟,而不是一律回到該語系首頁。以文章為例,從繁中教學切到英文後,標題可能改寫,但應仍在解釋相同操作;若對應頁尚不存在,切換選單應清楚處理無此版本的情況,不要假裝存在或帶到不相干內容。

實測時先直接打開來源頁,再逐一點切換項目,記錄畫面顯示的語言、落地網址、頁面主題、是否保留必要的路徑資訊,以及是否遇到登入、空白頁或錯誤轉址。接著另開每個目標網址,確認不依賴前一頁的 cookie 或瀏覽器設定也能載入預期語言。對桌機和手機各抽查代表性頁型,確認選單可辨識且操作後有明確回應;若切換器只在首頁出現,內頁訪客仍可能無法找到對應內容。

當某個語言沒有同頁版本,可以採用明確的語系選擇頁或適當的預設頁,但先寫出 fallback 規則,再實際點一次確認。hreflang 的 x-default 可標示未命中其他語系時使用的預設網址,適合語言選擇頁等情境;它不會自動替每一篇內容補出不存在的翻譯頁。測試表把「標記目的網址」和「切換器實際目的網址」放在不同欄,兩者都對到同一內容群組才算通過,否則能快速辨認是搜尋標記、前端連結或頁面對應資料出錯。

切換器也可以逐項記錄可見名稱和實際語言,例如選單顯示「English」時,落地頁應有英文主要內容。不要只靠瀏覽器自動翻譯後的畫面判斷;若連結加上追蹤參數,確認參數不會改變頁面內容或破壞目標網址。

保存抽查日期結果

抽查結果要讓下一個人能重做,而不是只留下「已檢查」三個字。每次記錄抽查日期、網站範圍、抽樣理由、頁面類型、內容群組、來源網址、預期語系與網址、實際標記、切換器落點、canonical、檢查方式和證據位置。結果可分為通過、發現問題、待確認、沒有對應頁;每個問題再記負責角色、修正項目和複查狀態。若用試算表,凍結欄位名稱並以群組碼排序,新增版本時便能看出哪些頁要一起更新,不會只改到其中一種語言。

保存證據時,保留足以重現判斷的內容,例如原始碼片段、標記擷取結果、頁面截圖和實際落地網址;不要只貼一張沒有網址的畫面。若資料量大,可按頁型、路由模板或最近變更分層抽查,再把未抽到的範圍標出來。報告要寫明樣本與未檢範圍,不能把抽查結果說成全站保證;修正後回到原問題列複測,記下舊值、新值及確認人,讓後續交接有前後對照。

把複查觸發條件也寫在表頭或維護說明:新增語系、改網址規則、搬移文章、切換模板、調整導覽或重建 sitemap 時,都應檢查受影響的配對群組。交接時讓維護者知道資料來源、怎麼更新清單、哪個欄位代表問題已關閉。

填寫日期欄時使用實際執行檢查的日期,並在複查時新增一筆,不覆蓋原始結果;這樣才能看出問題何時出現、何時修正,以及哪些頁面還沒有重新確認。這份紀錄只追蹤搜尋引擎可辨識的語系網址關係與使用者切換落點,不代替譯文核稿。下一步,先挑一個內容類型建立三語清單,逐頁回指並實測切換,再保存首輪結果;若要了解 ZhenheAI 的網站與工作流程資訊,請前往 ZhenheAI 官網。