Technical SEOSEO IssuesHreflangGEO

Hreflang Errors That Hurt Bilingual SEO Rankings

How hreflang errors, missing return tags, and language mismatches become SEO and GEO issues: the wrong language ranks, and AI answers cite the other version.

A bilingual page can be indexed and still rank in the wrong language. The English URL shows for a Traditional Chinese query, or both URLs compete and neither holds a stable position. Hreflang is the HTML signal that tells Google which URL belongs to which language and region. When the tags are missing, one-way, or pointed at a URL that should not rank, the SEO issue is language targeting. The GEO issue is an AI answer that quotes the version the reader did not ask for.

This guide follows common SEO and GEO issues that hurt rankings. Use duplicate content and keyword cannibalization when two URLs in the same language compete, or when a canonical is collapsing a real translation into one language. Use the title tag guide when the pair is annotated correctly but both pages share one title. Use this one when the annotations themselves are wrong: missing return tags, bad language codes, or a cluster that names a redirect, a 404, or the other language’s canonical.

What fails in a language pair

FaultWhat Google seesSEO issueGEO issue
No hreflangTwo URLs, no language linkEnglish and Chinese compete, or the wrong one ranksRetrieval follows links, not a language hint
One-way tagsA points at B, B does not point backThe cluster is ignoredThe unused language URL stays undiscovered
Wrong codeA Traditional Chinese page marked zh-CN or zh-HansThe page is offered to the wrong readersThe citation looks like the wrong market
Hreflang to a redirect or 404The alternate is not a pageThe cluster is droppedThe fetch stops before the translation
Canonical across languagesChinese canonical points at EnglishOne language leaves the indexAnswers in that language lose the URL
html lang disagrees with the copyThe document claims a language it is not written inA weaker language signalA crawler that trusts lang stores the wrong label

Hreflang is a hint, not a command. A broken cluster does not trigger a sitewide penalty. Google drops the hint and chooses a URL on its own. That choice is the ranking problem.

Return tags, self-references, and codes

Each language URL should list the whole cluster: itself, the other language, and one x-default. The return tag is the other page listing this page back. If the English page references Chinese and the Chinese page does not reference English, Google can ignore the pair. A missing self-reference has the same effect. The page that forgets to name itself is not a member of the cluster.

Use absolute URLs on the host you want indexed. A relative path, an http:// URL, or a host that redirects to www makes the alternate something other than the canonical. One permanent redirect is enough for visitors. It is not a valid hreflang target. The internal links and redirects guide covers chains. Here, the rule is narrower: the href in the alternate link must be the final 200 URL.

Language codes are ISO 639-1. An optional region is ISO 3166-1 Alpha-2. For a Hong Kong site, pick one pair and use it on every template:

  • en-HK with zh-HK says both versions are for Hong Kong.
  • en with zh-Hant says English with no region, and Traditional Chinese with no region.
  • zh-Hant-HK is Traditional Chinese for Hong Kong, when you need the script and the region together.

The SEO issue is mixing these. A Traditional Chinese page marked zh-CN or zh-Hans is offered as Simplified Chinese. A Hong Kong page marked only zh-TW is aimed at Taiwan. en-UK is not a region code. en-GB is. x-default is the fallback when no language matches, usually the English URL or a language chooser. It must be one stable canonical, the same URL on every page in the cluster, and it must return 200.

Canonicals and the first HTML response

Hreflang does not replace a canonical. Each language that should rank needs a canonical to itself. Pointing the Chinese canonical at the English URL tells Google the Chinese URL is a duplicate. The translation then drops out of results, and out of AI answers that depend on an indexed Chinese page. Keep that collapse for technical duplicates inside one language, which is the cannibalization guide.

The alternate URL has to be indexable. A noindex, a robots block, or a sitemap that omits the URL wins over hreflang. The indexing and crawl guide covers those coverage states. Hreflang cannot index a page Google is not allowed to store.

Put the cluster in the first HTML response, as link elements. A tag that appears only after JavaScript runs is invisible to crawlers that do not execute the script. Many AI crawlers are in that group. Google renders some pages, but the safe version is the raw HTML.

If an XML sitemap also lists the cluster, the two copies must match. Conflicting codes, or a sitemap that still names last year’s slug, are a second SEO issue on top of the HTML. Prefer one source. A template that emits the tags is easier to keep aligned with the page that was just published.

Search Console no longer has a dedicated hreflang report. Check the tags with a crawl, then use URL Inspection on both URLs. You want the user-declared canonical, Google’s selected canonical, and the indexed URL to be the same address the hreflang names.

How language mismatches change AI citations

Generative engine optimization needs the passage in the language of the prompt. How to rank in AI search describes that passage. Hreflang does not route ChatGPT, Perplexity, or Gemini to it. Those systems cite the URL they fetched. They do not switch URLs because a link rel="alternate" says another language exists.

That is why a correct Google ranking and a wrong AI citation can happen together. Google shows the Chinese URL for a Chinese query because the cluster is valid. An answer engine that already knew the English URL, or that followed only English links, quotes the English page for a Traditional Chinese prompt. The answer looks off, and the brand looks less local.

The GEO fixes sit on the page, not in the tag:

  • The Chinese URL returns 200 and the first HTML is Traditional Chinese.
  • html lang matches that copy. lang="en" on a Chinese article teaches a crawler the wrong label.
  • Same-language internal links make the URL reachable without hreflang. A Chinese hub that only links to English leaves the translation as an orphan. Orphan pages are in the internal links guide.
  • The title and the first paragraph answer the query in that language. A shared English title is the title tag guide.
  • The translation is a real page, not a thin machine pass. Thin pages are the content guide.

x-default does not choose which page an AI system quotes. It only names a fallback for searchers whose language is outside the cluster.

A practical order of fixes

  1. List every indexable URL with the language of the visible copy, the html lang value, and the hreflang code. Treat a mismatch as a defect.
  2. Confirm both URLs in the pair return 200, are self-canonical, and are not noindex.
  3. Emit the full cluster in the first HTML: self, the other language, and one x-default, using absolute https URLs on the live host.
  4. Confirm the return tags. A one-way annotation is the same as none.
  5. If a sitemap repeats the cluster, make it identical or remove it.
  6. Give each language its own title and opening answer.

Then test one English query and one Traditional Chinese query. The Google result should be the matching URL. Test the same questions as prompts. The cited URL should be the matching language only when that URL is the one the crawler can fetch.

Questions teams ask

Do hreflang errors cause a Google penalty?

No. Google ignores a cluster it cannot trust. Rankings move because the wrong URL is left to compete, or because one language is canonicalised away. Repair the annotations. Do not add more tags to “balance” a broken pair.

Should a Hong Kong page use zh-HK or zh-Hant?

Use one code everywhere. zh-HK means Chinese for Hong Kong. zh-Hant means Traditional Chinese without a region. zh-Hant-HK means both. The error is mixing them, or marking a Traditional Chinese page as zh-CN or zh-Hans.

Can hreflang fix a page that is not indexed?

No. The alternate has to return 200, stay out of robots blocks, and canonicalise to itself. A tag cannot override noindex. Start with the indexing guide when Search Console says the translation was excluded.

Will hreflang make an AI answer cite the Chinese page?

Only Google is being asked to swap URLs. An AI answer cites the page its crawler fetched. Put the Chinese answer on the Chinese URL, in the first HTML, and link to it from Chinese pages. Hreflang keeps the English URL from being the one Google ranks for that query.

Should the Chinese canonical point at the English page?

Not when the Chinese page is a real translation that should rank. A cross-language canonical removes one language from results. Use hreflang to connect them, and a self-canonical on each.

What to fix this month

  1. Crawl both languages and list one-way tags, missing self tags, and codes that do not match the copy.
  2. Repoint any hreflang that lands on a redirect, a 404, or a URL whose canonical is somewhere else.
  3. Serve the cluster in the first HTML, on absolute live-host URLs.
  4. Align html lang with the hreflang code on each template.
  5. Re-check one query and one prompt in each language, and note which URL was cited.

Search uses the cluster to choose a language. Answer engines use the page they can actually fetch. Hreflang errors are how a bilingual site ranks the wrong version, and how the right version never becomes the citation.

技術SEOSEO問題HreflangGEO

Hreflang 錯誤與語言錯配:雙語網站如何拖低 SEO 與 AI 排名

說明 hreflang 錯誤、缺少回傳標籤與語言錯配,如何成為拖低 Google 排名的 SEO 問題,並讓 ChatGPT、Perplexity 與 AI Overview 引用另一種語言的頁面。

雙語頁面可以已被索引,卻以錯誤的語言排名。繁體中文查詢出現的是英文網址,或兩個網址互相競爭,沒有一個能穩住位置。Hreflang 是告訴 Google 哪個網址屬於哪種語言與地區的 HTML 信號。標籤缺失、只有單向,或指向不該排名的網址時,SEO 問題是語言定位。GEO 問題是 AI 答案引用了讀者沒有要求的那一個版本。

本篇接在常見 SEO 與 GEO 問題之後。同一種語言裡有兩個網址在競爭,或 canonical 把真正的譯文收成一種語言,用重複內容與關鍵字互搶。標註正確、兩頁卻共用一個標題,用標題標籤與 Meta 描述。標註本身有問題,就用本篇:缺少回傳標籤、語言代碼錯誤,或整組指向重新導向、404,或另一種語言的 canonical。

一組語言頁會壞在哪裡

問題Google 看到什麼SEO 問題GEO 問題
沒有 hreflang兩個網址,沒有語言關聯中英文互搶,或排錯一個擷取跟著連結走,不跟著語言提示
單向標籤A 指向 B,B 沒有指回 A整組被忽略沒被用到的語言網址仍不被發現
錯誤代碼繁體中文頁標成 zh-CN 或 zh-Hans頁面被提供給錯誤的讀者引用看起來像另一個市場
Hreflang 指向重新導向或 404替代網址不是一個頁面整組被捨棄抓取在譯文之前停下
跨語言 canonical中文 canonical 指向英文一種語言離開索引該語言的答案失去這個網址
html lang 與內文不符文件聲稱的語言並不是內文的語言語言信號變弱信任 lang 的爬蟲存下錯誤標籤

Hreflang 是提示,不是命令。損壞的一組不會觸發全站處罰。Google 丟掉提示,自行挑選網址。那個選擇就是排名問題。

回傳標籤、自我參照與代碼

每個語言網址都應列出整組:自己、另一種語言,以及一個 x-default。回傳標籤是對方也把這一頁列回來。英文頁指向中文、中文頁卻不指向英文,Google 可以忽略這組。缺少自我參照的效果相同。忘了把自己寫進去的那一頁,就不屬於這一組。

要用你希望被索引的主機上的絕對網址。相對路徑、http://,或會重新導向到 www 的主機,都會讓替代網址不等於正規網址。一次永久重新導向對訪客已經足夠,但它不是有效的 hreflang 目標。重新導向鏈見內部連結與重新導向。這裡的規則更窄:替代連結裡的 href 必須是最終回傳 200 的網址。

語言代碼用 ISO 639-1。地區可以加上 ISO 3166-1 Alpha-2。香港網站應選定一組,並在每個範本使用:

  • en-HK 配 zh-HK,表示兩個版本都面向香港。
  • en 配 zh-Hant,表示不限地區的英文,以及不限地區的繁體中文。
  • zh-Hant-HK 是面向香港的繁體中文,需要同時標出文字與地區時使用。

SEO問題 在於把它們混用。繁體中文頁標成 zh-CN 或 zh-Hans,會被當成簡體中文來提供。香港頁只標 zh-TW,目標變成台灣。en-UK 不是地區代碼,en-GB 才是。x-default 是沒有語言能對上時的後備,通常是英文網址或語言選擇頁。它必須是一個穩定的正規網址,整組每一頁都寫同一個,而且回傳 200。

Canonical 與第一份 HTML

Hreflang 不能取代 canonical。每一種應該排名的語言,都要把 canonical 指回自己。把中文的 canonical 指向英文網址,等於告訴 Google 中文網址是重複頁。譯文會從搜尋結果消失,也從依賴已索引中文頁的 AI 答案裡消失。那種合併只適用於同一語言內部的技術性重複,見關鍵字互搶指南。

替代網址必須可以被索引。noindex、robots 封鎖,或 sitemap 漏掉該網址,都會壓過 hreflang。這些涵蓋狀態見索引與爬取問題。Hreflang 不能把 Google 不被允許儲存的頁面放進索引。

把整組放進第一份 HTML,用 link 元素。只在 JavaScript 執行後才出現的標籤,對不執行腳本的爬蟲是看不見的。不少 AI 爬蟲屬於這一類。Google 會渲染部分頁面,但安全的做法是寫在原始 HTML 裡。

若 XML sitemap 也列出同一組,兩份必須一致。代碼互相矛盾,或 sitemap 仍寫著去年的網址,是 HTML 之外的第二個 技術SEO 問題。最好只留一個來源。由範本輸出標籤,比較容易跟剛發布的頁面保持一致。

Search Console 已經沒有獨立的 hreflang 報告。用爬取檢查標籤,再對兩個網址做網址審查。你要的是:你宣告的 canonical、Google 選中的 canonical,以及被索引的網址,都是 hreflang 寫下的那個地址。

語言錯配如何改變 AI 引用

生成式引擎優化需要一段與提示相同語言的文字。如何在 AI 搜尋中提升可見度講的是那段文字。Hreflang 不會把 ChatGPT、Perplexity 或 Gemini 導向它。這些系統引用的是它們抓到的網址。它們不會因為 link rel="alternate" 說還有另一種語言,就改抓另一個網址。

所以 Google 排名正確、AI 引用卻錯誤,可以同時發生。整組有效時,Google 會為中文查詢顯示中文網址。已經認識英文網址、或只跟著英文連結走的答案引擎,會用英文頁回答繁體中文提示。答案看起來不對,品牌也不像本地來源。

GEO 的修法在頁面上,不在標籤上:

  • 中文網址回傳 200,而且第一份 HTML 是繁體中文。
  • html lang 與內文一致。中文文章上的 lang="en" 會讓爬蟲學到錯誤標籤。
  • 同語言的內部連結讓網址不靠 hreflang 也能被走到。中文樞紐只連到英文,譯文就仍是孤立頁。孤立頁見內部連結指南。
  • 標題與第一段用該語言回答查詢。共用英文標題見標題標籤指南。
  • 譯文是真正的一頁,而不是單薄的機器翻譯。單薄頁面見內容指南。

x-default 不會決定 AI 系統引用哪一頁。它只為語言落在這組之外的搜尋者指名一個後備網址。

實際的修復順序

  1. 列出每一個可索引網址,以及可見內文的語言、html lang 的值與 hreflang 代碼。對不上就算缺陷。
  2. 確認一組裡的兩個網址都回傳 200、canonical 指向自己,而且沒有 noindex。
  3. 在第一份 HTML 輸出整組:自己、另一種語言,以及一個 x-default,使用正式主機上的絕對 https 網址。
  4. 確認回傳標籤。單向標註等於沒有標註。
  5. Sitemap 若重複列出這組,讓它與 HTML 相同,否則刪掉。
  6. 每種語言使用自己的標題與開首答案。

然後各測一個英文查詢和一個繁體中文查詢。Google 結果應該是對應的網址。把同樣的問題做成提示再測一次。被引用的網址只有在爬蟲抓得到該語言的那一頁時,才會是對應的語言。

團隊常問的問題

Hreflang 錯誤會造成 Google 處罰嗎?

不會。Google 會忽略它無法信任的一組。排名變動,是因為錯誤的網址被留下競爭,或因為一種語言被 canonical 收掉。修好標註。不要再加標籤去「平衡」一組已經壞掉的標註。

香港頁面應該用 zh-HK 還是 zh-Hant?

全站只用一個代碼。zh-HK 表示面向香港的中文。zh-Hant 表示不限地區的繁體中文。zh-Hant-HK 表示兩者都要。錯誤是把它們混用,或把繁體中文頁標成 zh-CN 或 zh-Hans。

Hreflang 能否修好未被索引的頁面?

不能。替代網址必須回傳 200、不被 robots 封鎖,而且 canonical 指向自己。標籤不能凌駕 noindex。Search Console 顯示譯文被排除時,先看索引指南。

Hreflang 能否讓 AI 答案引用中文頁?

被要求換網址的是 Google。AI 答案引用的是爬蟲抓到的那一頁。把中文答案放在中文網址的第一份 HTML,並從中文頁連過去。Hreflang 的作用,是避免 Google 用英文網址去排那個查詢。

中文的 canonical 應該指向英文頁嗎?

中文頁是應該排名的真正譯文時,不應該。跨語言的 canonical 會把一種語言從搜尋結果移除。用 hreflang 連接它們,每一頁的 canonical 指向自己。

這個月要檢查什麼

  1. 爬兩種語言,列出單向標籤、缺少的自我參照,以及與內文不符的代碼。
  2. 任何落在重新導向、404,或 canonical 指向別處的 hreflang,都改指最終網址。
  3. 在第一份 HTML 提供整組,使用正式主機的絕對網址。
  4. 讓每個範本的 html lang 與 hreflang 代碼一致。
  5. 每種語言各查一次查詢與一次提示,記下被引用的是哪個網址。

搜尋靠這一組來選擇語言。答案引擎用的是它真正抓得到的頁面。Hreflang 錯誤,就是雙語網站排到錯誤版本,以及正確版本永遠成不了引用的原因。