Ưu đãi tháng 7: giảm 20% tất cả dịch vụ, kết thúc ngày 31/7. Nhắn Zalo để nhận báo giá.
Tan Phat Media

Hreflang Là Gì? Triển Khai Cho Website Đa Ngôn Ngữ

23 tháng 5, 2026
3.922
hreflang tag
hreflang
international seo
seo đa ngôn ngữ
multilingual seo
cách triển khai hreflang
hreflang cho website đa ngôn ngữ
hreflang theo google
hreflang seo quốc tế
Hreflang Là Gì? Triển Khai Cho Website Đa Ngôn Ngữ - Tấn Phát Digital

Trong tất cả các chủ đề technical SEO, hreflang có lẽ là thứ phức tạp và gây lỗi nhiều nhất. Rất nhiều website đa ngôn ngữ đang triển khai sai — và lỗi phổ biến nhất là thiếu return link (không khai báo hai chiều), khiến Google bỏ qua hoàn toàn các thẻ hreflang.

Hậu quả của hreflang sai: người dùng Đức nhận được trang tiếng Anh trong kết quả tìm kiếm; các phiên bản ngôn ngữ cạnh tranh lẫn nhau; và website mất traffic quốc tế mỗi tháng.

Bài viết này giải mã toàn bộ hreflang theo tài liệu chính thức của Google. Bài dành cho: developer triển khai hreflang, technical SEO cần fix lỗi, và chủ website đa ngôn ngữ.

Phần 1: Hreflang là gì?

Nếu bạn có nhiều phiên bản của một trang cho các ngôn ngữ hoặc khu vực khác nhau, hãy báo cho Google biết về các phiên bản đó. Điều này giúp Google Search dẫn người dùng tới phiên bản phù hợp nhất theo ngôn ngữ hoặc khu vực của họ.

Ba tình huống cần dùng hreflang:

  1. Chỉ dịch phần khung (boilerplate) — nội dung chính giữ một ngôn ngữ, chỉ dịch menu/footer. Thường gặp ở forum hoặc site có nội dung do người dùng tạo.

  2. Biến thể theo khu vực, cùng ngôn ngữ — cùng tiếng Anh nhưng giá và chính sách ship khác nhau cho US, UK, Ireland (en-US, en-GB, en-IE).

  3. Dịch đầy đủ — website có bản tiếng Việt và tiếng Anh hoàn chỉnh (vi, en).

Hai điểm quan trọng thường bị hiểu sai:

  • Các phiên bản địa phương hóa chỉ bị coi là trùng lặp nếu nội dung chính vẫn chưa được dịch. Nếu bạn đã dịch đầy đủ, không bị coi là duplicate content.

  • Google KHÔNG dùng hreflang (hay thuộc tính lang trong HTML) để nhận diện ngôn ngữ của trang — họ dùng thuật toán tự phân tích nội dung. Hreflang chỉ để ánh xạ các phiên bản với nhau.

Phần 2: Ba phương pháp triển khai

Phương pháp

Phù hợp với

HTML tags

Dễ nhất — site nhỏ đến vừa

HTTP headers

File không phải HTML (PDF, ảnh, video)

XML Sitemap

Site lớn (hàng nghìn URL)

Google nói rõ: bạn có thể dùng cả ba cùng lúc, nhưng không có lợi ích gì thêm. Hãy chọn một phương pháp và dùng nhất quán.

Phần 3: Phương pháp 1 — HTML Tags

Cú pháp: <link rel="alternate" hreflang="mã_ngôn_ngữ" href="url" />

Sáu quy tắc bắt buộc

  1. Self-reference: mỗi phiên bản ngôn ngữ phải liệt kê chính nó cùng tất cả các phiên bản khác. Có 3 ngôn ngữ → mỗi trang có 3 thẻ hreflang (kể cả thẻ trỏ về chính nó).

  2. URL đầy đủ (fully-qualified): phải có scheme https://. Sai: //example.com/page hoặc /page.

  3. Có thể khác domain: URL thay thế không cần cùng domain — hoàn toàn có thể trỏ chéo giữa example.com, example.de, example.com.vn.

  4. Nên có catchall: nếu có nhiều URL cho cùng một ngôn ngữ ở các khu vực khác nhau (en-IE, en-CA, en-AU), hãy thêm một URL en chung cho người dùng không xác định được khu vực.

  5. Hai chiều (bidirectional) — QUAN TRỌNG NHẤT: nếu hai trang không cùng trỏ về nhau, các thẻ hreflang sẽ bị bỏ qua hoàn toàn. Trang A trỏ tới B thì B bắt buộc phải trỏ về A.

  6. x-default: trang dự phòng khi không khớp ngôn ngữ nào.

Ví dụ cho website Việt Nam

Một shop xuất khẩu thủ công có 3 phiên bản (VI, EN, JA). Đoạn HTML dưới đây phải giống hệt nhau trên cả 3 trang — chỉ khác nội dung phần body:

html

<head>
  <title>Nón Lá Việt Nam</title>
  <link rel="alternate" hreflang="vi"
        href="https://shop.com/vi/san-pham/non-la" />
  <link rel="alternate" hreflang="en"
        href="https://shop.com/en/products/conical-hat" />
  <link rel="alternate" hreflang="ja"
        href="https://shop.com/ja/products/sugegasa" />
  <link rel="alternate" hreflang="x-default"
        href="https://shop.com/en/products/conical-hat" />
</head>

Với site đa khu vực phức tạp hơn (ví dụ có bản tiếng Anh chung, bản UK, bản US, bản Đức và một trang chọn quốc gia):

html

<head>
  <link rel="alternate" hreflang="en-gb" href="https://en-gb.example.com/page.html" />
  <link rel="alternate" hreflang="en-us" href="https://en-us.example.com/page.html" />
  <link rel="alternate" hreflang="en"    href="https://en.example.com/page.html" />
  <link rel="alternate" hreflang="de"    href="https://de.example.com/page.html" />
  <link rel="alternate" hreflang="x-default" href="https://www.example.com/" />
</head>

Phần 4: Phương pháp 2 — HTTP Headers

Dùng cho file không phải HTML (PDF, ảnh, video):

Link: <https://example.com/file.pdf>; rel="alternate"; hreflang="en",
      <https://de.example.com/file.pdf>; rel="alternate"; hreflang="de"

Triển khai trên server:

nginx

location /file.pdf {
    add_header Link '<https://example.com/file.pdf>; rel="alternate"; hreflang="en", <https://de.example.com/file.pdf>; rel="alternate"; hreflang="de"';
}

apache

<Files "file.pdf">
    Header set Link "<https://example.com/file.pdf>; rel=\"alternate\"; hreflang=\"en\", <https://de.example.com/file.pdf>; rel=\"alternate\"; hreflang=\"de\""
</Files>

Phần 5: Phương pháp 3 — XML Sitemap

Phù hợp với site lớn. Cần khai báo namespace xhtmlmỗi URL phải liệt kê đầy đủ mọi biến thể (kể cả chính nó) — sitemap cũng là một mục trong checklist Technical SEO:

xml

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:xhtml="http://www.w3.org/1999/xhtml">

  <url>
    <loc>https://shop.com/vi/san-pham/non-la</loc>
    <xhtml:link rel="alternate" hreflang="vi" href="https://shop.com/vi/san-pham/non-la"/>
    <xhtml:link rel="alternate" hreflang="en" href="https://shop.com/en/products/conical-hat"/>
    <xhtml:link rel="alternate" hreflang="ja" href="https://shop.com/ja/products/sugegasa"/>
  </url>

  <url>
    <loc>https://shop.com/en/products/conical-hat</loc>
    <xhtml:link rel="alternate" hreflang="vi" href="https://shop.com/vi/san-pham/non-la"/>
    <xhtml:link rel="alternate" hreflang="en" href="https://shop.com/en/products/conical-hat"/>
    <xhtml:link rel="alternate" hreflang="ja" href="https://shop.com/ja/products/sugegasa"/>
  </url>

</urlset>

Phần 6: Mã ngôn ngữ và khu vực — nơi gây lỗi nhiều nhất

Định dạng: ngôn_ngữ[-khu_vực]ngôn ngữ theo ISO 639-1 (2 chữ cái), khu vực (tùy chọn) theo ISO 3166-1 Alpha 2.

Cảnh báo: bạn KHÔNG thể chỉ khai báo mã quốc gia. Mã đầu tiên luôn là NGÔN NGỮ, và Google không tự suy ra ngôn ngữ từ mã quốc gia.

Đúng/Sai

Lý do

vi-VN

Đúng

vi = tiếng Việt, VN = Việt Nam

vi

Đúng

Tiếng Việt, không giới hạn khu vực

VN

SAI

"VN" không phải mã ngôn ngữ

en-US

Đúng

en = English, US = United States

US

SAI

"US" không phải mã ngôn ngữ

en-UK

SAI

"UK" là mã dự trữ — phải dùng en-GB

be

SAI (nếu định nói Bỉ)

be = tiếng Belarus, không phải Belgium!

nl-be / fr-be / de-be

Đúng

Tiếng Hà Lan / Pháp / Đức cho người dùng ở Bỉ

Mã thường dùng: ngôn ngữ — vi, en, ja, ko, zh, th, fr, de, es; khu vực — VN, US, GB, JP, KR, CN, TW, SG, AU, DE.

Tiếng Trung phức tạp hơn: zh-TW (tự suy ra Phồn thể), zh-CN (Giản thể), hoặc khai báo tường minh bằng zh-Hant / zh-Hans.

x-default dùng khi không có ngôn ngữ/khu vực nào khớp với cài đặt trình duyệt của người dùng — thường trỏ tới trang chọn quốc gia:

html

<link rel="alternate" href="https://example.com/en-gb" hreflang="en-gb" />
<link rel="alternate" href="https://example.com/en-us" hreflang="en-us" />
<link rel="alternate" href="https://example.com/country-selector" hreflang="x-default" />

Phần 7: Ba lỗi phổ biến nhất

Lỗi

Mô tả

Cách sửa

Thiếu return link (lỗi số 1)

Trang A trỏ tới B nhưng B không trỏ về A → Google bỏ qua toàn bộ thẻ hreflang

Đảm bảo mọi cặp trang trỏ về nhau

Sai mã ngôn ngữ

hreflang="VN", hreflang="USA", hreflang="en-VietNam"

Dùng ISO 639-1: vi-VN, en-US, en-VN

Sai mã khu vực

Google bỏ qua các mã không hợp lệ như EU, UN, UK

Dùng mã chính thức ISO 3166-1 Alpha 2 (GB thay vì UK)

Phần 8: Triển khai theo nền tảng

WordPress (Polylang/WPML tự sinh hreflang):

php

add_action('wp_head', function() {
    if (function_exists('pll_the_languages')) {
        $languages = pll_the_languages(['raw' => 1]);
        foreach ($languages as $lang) {
            printf('<link rel="alternate" hreflang="%s" href="%s" />' . "\n",
                   $lang['slug'], $lang['url']);
        }
    }
});

Next.js:

javascript

// next.config.js
module.exports = {
  i18n: {
    locales: ['vi', 'en', 'ja'],
    defaultLocale: 'vi',
  },
}

javascript

// pages/_app.js
import Head from 'next/head';
import { useRouter } from 'next/router';

function MyApp({ Component, pageProps }) {
  const { locales, pathname } = useRouter();

  return (
    <>
      <Head>
        {locales.map((locale) => (
          <link key={locale} rel="alternate" hrefLang={locale}
                href={`https://shop.com/${locale}${pathname}`} />
        ))}
        <link rel="alternate" hrefLang="x-default"
              href={`https://shop.com${pathname}`} />
      </Head>
      <Component {...pageProps} />
    </>
  );
}

Shopify (trong theme.liquid):

liquid

{% for locale in shop.published_locales %}
  <link rel="alternate"
        hreflang="{{ locale.iso_code }}"
        href="{{ canonical_url | replace: shop.url, '' | prepend: locale.root_url | prepend: shop.url }}">
{% endfor %}
<link rel="alternate" hreflang="x-default" href="{{ canonical_url }}">

Phần 9: Kiểm tra và checklist

Công cụ kiểm tra: hreflang tags generator của Aleyda Solis (tạo/chỉnh thẻ), hreflang testing tool của Merkle/TechnicalSEO (validate trên trang live), và International Targeting Report trong Search Console.

Giai đoạn

Cần kiểm tra

Trước triển khai

Xác định mọi ngôn ngữ/khu vực mục tiêu; map URL cho từng phiên bản; chọn một phương pháp; quyết định URL cho x-default

Triển khai

Self-reference trên mỗi trang; URL đầy đủ https://; hai chiều đầy đủ; đúng mã ngôn ngữ (ISO 639-1) và khu vực (ISO 3166-1); có x-default; có URL catchall nếu nhiều khu vực cùng ngôn ngữ

Kiểm thử

Test bằng công cụ hreflang; kiểm tra International Targeting trong Search Console; crawl thử bằng Screaming Frog; không còn lỗi "missing return links"

Sau triển khai

Submit sitemap cập nhật; theo dõi hiệu suất theo từng locale; xử lý lỗi phát sinh

Kết luận

Hreflang là kỹ thuật quan trọng nhất của International SEO. Triển khai đúng thì khách hàng quốc tế sẽ thấy đúng phiên bản, và tỷ lệ chuyển đổi tăng lên. Năm thông điệp cốt lõi: (1) hai chiều là vua — thiếu return link là lỗi số 1 và Google sẽ bỏ qua ngay; (2) mã phải đúng chuẩn ISO; (3) luôn self-reference; (4) x-default là phương án dự phòng; và (5) test kỹ trước khi deploy.

Hreflang là nền tảng của chiến lược SEO đa ngôn ngữ và đa quốc gia. Nếu bạn muốn xây dựng website quốc tế chuẩn SEO và triển khai hreflang đúng cách, hãy liên hệ Tấn Phát Digital để được tư vấn.

Biên soạn và Việt hóa từ tài liệu Google Search Central về phiên bản địa phương hóa. Code example và checklist thuộc về Tấn Phát Digital.

Câu hỏi thường gặp

Hreflang là gì?

Hreflang là thuộc tính dùng để báo cho Google biết các phiên bản ngôn ngữ hoặc khu vực của cùng một nội dung. Nó giúp công cụ tìm kiếm hiển thị đúng URL phù hợp với ngôn ngữ và vị trí của người dùng.

Hreflang có tác dụng gì với website đa ngôn ngữ?

Hreflang giúp giảm nhầm lẫn giữa các trang có nội dung tương tự nhưng khác ngôn ngữ hoặc thị trường. Nhờ đó, người dùng dễ truy cập đúng phiên bản hơn, cải thiện trải nghiệm và hỗ trợ SEO quốc tế hiệu quả hơn.

Hreflang có phải là yếu tố xếp hạng SEO không?

Hreflang không trực tiếp làm tăng thứ hạng từ khóa. Vai trò chính của nó là giúp Google hiểu mối quan hệ giữa các phiên bản nội dung, từ đó phân phối đúng trang cho đúng người tìm kiếm ở từng ngôn ngữ hoặc khu vực.

Khi nào website cần triển khai hreflang?

Website nên dùng hreflang khi có nhiều phiên bản nội dung cho các ngôn ngữ khác nhau như tiếng Việt, tiếng Anh, tiếng Nhật, hoặc cho các thị trường riêng như en-US và en-GB. Nếu chỉ có một ngôn ngữ, thường không cần triển khai.

Hreflang khác gì với thẻ canonical?

Canonical dùng để chỉ ra phiên bản chính khi có nhiều URL gần giống nhau, còn hreflang dùng để liên kết các phiên bản theo ngôn ngữ hoặc khu vực. Hai thẻ này không thay thế nhau và có thể cần dùng cùng lúc.

Có những cách nào để khai báo hreflang?

Có ba cách phổ biến: đặt trong thẻ link ở phần head của HTML, khai báo trong HTTP header, hoặc thêm vào XML sitemap. Với phần lớn website nội dung, dùng trong HTML hoặc sitemap là hai lựa chọn dễ triển khai nhất.

Mã hreflang nên viết như thế nào cho đúng?

Hreflang thường dùng mã ngôn ngữ theo chuẩn ISO như vi, en, ja và có thể kèm mã quốc gia như en-US hoặc en-GB. Cần viết đúng định dạng, nhất quán giữa các trang và tránh dùng mã không tồn tại hoặc sai chuẩn.

x-default trong hreflang là gì và khi nào nên dùng?

x-default dùng để chỉ phiên bản mặc định khi không có trang nào khớp chính xác với ngôn ngữ hoặc khu vực của người dùng. Nó thường áp dụng cho trang chọn ngôn ngữ, trang quốc tế chung hoặc phiên bản fallback của website.

Lỗi hreflang nào thường gặp nhất?

Các lỗi phổ biến gồm thiếu liên kết hai chiều giữa các phiên bản, trỏ sai URL, dùng sai mã ngôn ngữ hoặc quốc gia, trang khai báo không index được, và canonical mâu thuẫn với hreflang. Những lỗi này có thể khiến Google bỏ qua toàn bộ thiết lập.

Làm sao kiểm tra hreflang đã triển khai đúng chưa?

Bạn có thể kiểm tra mã nguồn HTML, XML sitemap hoặc HTTP header để xem khai báo có đầy đủ không. Ngoài ra nên dùng Google Search Console và các công cụ crawl SEO để phát hiện lỗi thiếu return tag, sai mã hoặc URL không thể index.

Bài viết liên quan

Bài cùng chuyên mục

Bài trụ cột của chủ đề

Hình ảnh đại diện của bài viết: Nghiên Cứu Từ Khóa SEO 2026: Tìm Từ Khóa "Hái Ra Tiền"
Bài trụ cột

Nghiên Cứu Từ Khóa SEO 2026: Tìm Từ Khóa "Hái Ra Tiền"

Nghiên cứu từ khóa SEO cho người mới 2026: phân biệt từ khóa thông tin vs "hái ra tiền", chọn theo ý định tìm kiếm, công cụ miễn phí và lập bản đồ từ khóa.

Bài mới nhất cùng chuyên mục

Zalo
Facebook
Tấn Phát Digital
Zalo
Facebook