ZhenheAI

多語網站 hreflang 怎麼核對?逐頁檢查語系對照與回鏈

用頁面母表整理同頁語系版本,逐頁核對 hreflang 代碼、替代網址與雙向回鏈,並記錄缺頁、錯配和抽查日期。

主題情境插畫:多語網站 hreflang 怎麼核對?逐頁檢查語系對照與回鏈

多語網站最容易讓人誤判的地方,是看見語言切換器便以為各頁已正確相連。真正的核對工作要回答三件事:每個語系實際有哪些頁、同一內容的替代頁是否成組、每一頁是否都列出相同且可用的對照網址。以下用逐頁清單與回鏈比對,把缺漏縮小到可修正的網址和標記。

實作步驟:列出各語系頁面;建立同頁對照組;核對標記語系代碼;檢查雙向回鏈;找出缺頁與錯配;記錄抽查結果日期

列出各語系頁面

先把頁面清單做成可追溯的母表,範圍不要只看首頁或選單。從網站地圖、站內連結和各語系目錄分別匯出網址,再按內容用途切成文章、產品頁、分類頁等類型;這一步不是核對翻譯,而是確認每個可索引頁都有明確紀錄。若同一網址有大小寫、尾斜線或追蹤參數版本,先按網站實際採用的標準網址去重,另記下轉址後的目的地。

欄位可包含內容識別碼、頁面主題、語系、目前網址、預期對照數、網址狀態、負責修正者與最後確認日期。識別碼可用站內穩定項目編號或人工編號,不要只用標題當鍵值,因為各語系標題不同,網址也可能經過改名。清單要同時保留「已確認沒有其他語系頁」與「尚未查明」兩種狀態,避免把空白格誤當成不需要對照。

例如一篇教學若有繁中與英文兩個版本,母表先建立一個內容識別碼,再各列一個頁面記錄;若查到第三個網址是舊路徑,記入轉址欄並回頭確認是否仍有標記指向它。首頁、語系切換頁、搜尋結果與篩選參數頁不一定屬於同一組,應以主內容是否真是同一頁的語系或地區版本判斷。先整理完整母表,後續逐頁檢查才不會漏掉孤兒頁,或把不同用途的頁面硬湊成一組。

批次匯出時可記錄來源與篩選條件,避免漏掉未連到主選單但仍可直接進入的頁面。清單上的網址最好保留抓取時的原始值與整理後的標準值兩欄,這樣能追出差異是來自網址正規化,還是語系頁本身缺漏。對暫時無法判定的條目先標為待確認,不要因為同組其他頁都找到,就推定缺少的那一頁不存在。

建立同頁對照組

配對時先問兩個網址是否代表同一個頁面任務,而不是只看路徑名稱相似。標題因語言不同可以不同,網址也可能一個採目錄、一個子網域;重點是主內容、頁面用途與使用者要完成的事相同。若一頁是完整指南,另一頁只是分類列表,即使網址看起來相近,也不應互相標成替代版本。為避免多對多錯配,可用母表中的內容識別碼固定每組預期網址,再逐一比對實際頁面。

以下是純假設的路徑對照,G-017 只是演練用識別碼,並非任何站點的實際網址:

假設語系 假設路徑 內容識別碼
繁體中文 /zh-tw/guide G-017
英文 /en/guide G-017
日文 /ja/guide G-017

建立對照組後,增加「預期頁數」和「實際頁數」兩欄;若預期三頁、目前只找到兩頁,就標成待釐清,而不是直接把兩頁當成完整組。若某語系把一篇長文拆成數頁、或把多頁合併成一頁,頁面任務已改變,須由管理者判定是否仍屬同一組;判定以前先不要將整組標記自動複製。表格的價值在於讓每一筆標記都能回到具體頁面,而不是根據語系目錄猜對應。

同一組可使用另一個交叉檢查:從每個候選頁的導覽或站內連結進入,確認語言切換後仍停留在相同內容,而非跳回各語系首頁。這不能取代標記比對,但能揭露「標記網址正確、頁面任務卻不同」的錯誤。對已配對頁面,記下人工確認依據,例如同一教學步驟、同一產品說明或同一服務區域,讓日後改版的人知道這組是按什麼原則建立。若沒有對應版本,將狀態記成「無對照頁」並標註確認人,後續新增語系時再重新檢視這一列,不要空著讓人猜測是遺漏還是刻意略過。

核對標記語系代碼

語系代碼不能只照網站目錄抄寫;路徑名稱是網站慣例,hreflang 的值則要符合語言與地區格式。先為每個對照頁設定預期代碼,再跟頁面原始碼或回應標頭逐項核對,特別留意把國家碼寫在前面、用底線代替連字號、拼錯地區碼,或把不同語言版本都標成同一代碼。Google Search Central 的多語版本文件說明,語言碼採 ISO 639-1,地區碼可接在後面並採 ISO 3166-1 Alpha-2;地區應放在語言之後,單獨寫國家碼並不表示語言。

例如繁體中文台灣可標成 zh-TW,簡體中文中國可標成 zh-CN,英文不限定地區可只用 en。大小寫本身不影響 Google 辨識,但地區部分用大寫較符合慣例;不要把格式慣例和代碼有效性混為一談。若網站提供不分地區的預設版本,可評估使用 x-default,並確認它指向實際的語言選擇或預設頁,不要把它當成任何缺漏語系的補丁。

實作檢查時,先抽一頁查看 HTML 的 head 區塊,確認每個 alternate 都有正確的 rel、hreflang 與完整網址,再把標記值和母表預期值比對。若同一語言因地區不同而有兩頁,須確認使用者對象確實不同,例如英文通用頁與台灣英文頁不能只因路徑不同便任意重複 en。把預期代碼、實際代碼、差異和證據位置記進表格,後續才能確認修正的是設定本身,而非只改顯示字樣。

核對時也要把代碼與頁面實際語言分開記錄:標記寫成 zh-TW,不代表頁面內容必定是繁體中文。若代碼正確但頁面主要內容仍是另一種語言,標記提供的意圖和使用者看到的內容就不一致。語言判斷應讀取頁面主體,而不是只檢查路徑、選單或 HTML lang 屬性;有差異時在清單新增「內容語言」欄,交由負責人確認後再定義對照。

檢查雙向回鏈

雙向回鏈不是只確認 A 頁有連到 B 頁。以一組三語頁為例,繁中、英文、日文三頁都應列出這三個版本,包括自己;每頁的語系與網址集合應相同,排列順序可以不同。逐頁讀取原始碼,將 hreflang → href 摘成清單,再依內容識別碼比對,確認每個目標頁的標記也有回指來源。若網站採用站點地圖或 HTTP 標頭提供標記,就依同一份預期對照表核查那些位置,避免只看 HTML 而漏掉實際採用的來源。

實務上可把每組當成小型有向圖:每個頁面是一個節點,每個 alternate 是一條邊。三頁完整互指時,每個頁面都包含三個節點;如果 A 指向 B、B 沒有 A,這一對就不是完整回鏈。不要只搜尋「有沒有該網址」,還要核對 href 是否精確一致,包括協定、網域、路徑、尾斜線與大小寫。

完成後可用表格標出 A→B 與 B→A 的結果,對角線代表頁面指向自己。舉例來說,A 指到 B 的舊路徑,而 B 回指 A 的正式路徑,看似成雙,實際對照目標仍不一致。每次修復後,回到兩端重新讀取輸出,不以程式碼已提交或模板已改作為完成證據。若整組只公布部分語系,記下省略頁面與原因,並確認保留的版本彼此仍可核對。

可在試算表把來源頁放在列、目標語系放在欄,填入「正確」「缺少」「指錯網址」等狀態,查看頁面是否漏列版本。再另做反向檢查:從每個目標頁回到來源欄搜尋,因為只從主語系出發容易忽略新加入的語系頁沒有納入舊模板。遇到多個地區版本時,回鏈也要確認到同一個內容組,而非只確認網域相同。比如英文頁回指繁中頁,繁中頁也要有英文項目;若英文還分美國和英國版本,表格應列三個具體目標,不能讓一個代碼同時指向兩個網址。

找出缺頁與錯配

把母表和實際標記做差集,就能把問題分成缺頁、缺標記、網址錯配、回鏈缺漏四類。預期清單有網址,網站地圖卻找不到,先檢查路徑是否改名、頁面是否下架或未納入匯出範圍;頁面存在但未列在同組標記中,確認是否刻意只支援部分語系,並記下判斷依據。不要為了讓數量看起來一致,就把另一篇相似文章補進去;錯誤配對比空白更難追查。

實際抓取每個 hreflang 目標,記錄回應結果與最終網址,確認網址可正常載入,且不是失效頁或意外轉到首頁。若標記指向舊網址,先確認新舊頁的內容識別碼與轉址關係,再同步更新同組所有版本;如果目標頁回應正常但主要內容不同,也要回頭檢查配對是否錯誤。這一步核對的是標記目標能否代表預期頁面,不是只看網址回應成功。

另將 canonical、robots 設定與 hreflang 對照一起檢視:不同語系若被 canonical 指向同一語系頁,或目標頁無法被搜尋引擎抓取,頁面關係就可能和清單不一致。把每個問題附上來源頁、目標頁、預期值、實際值和修正動作,並標註影響範圍;先修整組錯配,再修單頁拼字或格式。若找不到替代頁,保留缺頁狀態並決定補頁或移除該語系標記。

把異常排序時,可先處理會使整組關係失效的錯配,再處理少數頁面的格式差異;每項修正都標明波及頁面,避免只改來源頁而留下其他語系的舊值。若網站使用共用模板,可抽查不同目錄、不同頁型和近期改動頁,判斷問題是單頁資料錯誤還是模板輸出一致地缺項。修正後重新擷取實際頁面,將舊值與新值都保留在紀錄中,讓前後差異可追溯。

記錄抽查結果日期

每次抽查都要留下可重做的紀錄,日期不能只寫在檔名裡。表頭建議記錄抽查日期、時區、執行者、抽查範圍、清單版本與採用的標記來源;每列保存來源頁、預期語系集合、實際語系集合、回鏈結果、目標回應與差異狀態。若一組含多頁,可另外記錄抽查數,例如「共 12 組、抽 4 組、其中 1 組缺少英文回鏈」;這是假設示例,不可把抽樣結果寫成全站已通過。

抽查方式要能重現:保留查看的原始碼片段、匯出檔名或檢查工具結果位置,並標明檢查的是部署後頁面還是本機預覽。頁面改版、搬網址、增加語系或調整模板後,舊紀錄只代表當時狀態,需重新檢查受影響頁;未改動內容也可按固定範圍分批抽查,避免只檢查最新上線的一頁,便推論全站一致。

若抽查由多人分工,可先約定狀態詞和日期格式,例如使用 YYYY-MM-DD,並以同一時區紀錄;「通過」只用於本次已實際核對的項目,沒有打開的頁面標成未檢。抽查比例或組數只描述樣本範圍,不代表錯誤率或整站健康程度。當發現一筆錯誤時,記錄擴大抽樣的範圍與原因,之後才知道結果是否只是局部異常,或需要檢查同一模板輸出的其他語系頁。

最後用明確狀態收尾,例如「已核對」「待修正」「待確認」,並為待辦加上負責人和下次檢查日。交接時讓下一位檢查者能從內容識別碼找到來源頁,重做相同的代碼、網址和回鏈比對。下一步先挑一組已發布的多語頁,建立母表、逐頁核對標記與回鏈,並把本次日期填入紀錄。更多品牌資訊請見 ZhenheAI 首頁。