International SEO

hreflang + canonical conflict

Xung đột xảy ra khi thẻ canonical và hreflang trỏ đến các URL không nhất quán, khiến Google khó xác định phiên bản ưu tiên.

4 lượt xem Cập nhật: 26/05/2026

hreflang + canonical conflict là gì?

Xung đột hreflang và canonical (hreflang + canonical conflict) xảy ra khi thẻ rel="canonical" và các thẻ hreflang trên cùng một trang trỏ đến những URL không nhất quán — ví dụ: phiên bản tiếng Việt có thẻ canonical trỏ về trang tiếng Anh, trong khi thẻ hreflang lại khai báo đúng rằng đây là phiên bản vi-VN. Kết quả là Google không thể xác định rõ phiên bản nào là chính, dẫn đến khả năng xếp hạng quốc tế bị suy giảm hoặc trùng lặp nội dung giữa các khu vực.

Tại sao quan trọng trong SEO?

Xung đột này ảnh hưởng trực tiếp đến hiệu quả của chiến lược SEO đa ngôn ngữ và đa khu vực. Khi Google không hiểu được mối quan hệ giữa các phiên bản ngôn ngữ, hệ thống có thể:

  • Bỏ qua toàn bộ tập hreflang — khiến người dùng ở thị trường mục tiêu thấy nội dung sai ngôn ngữ;
  • Xếp hạng sai phiên bản (ví dụ: trang tiếng Thái xuất hiện cho tìm kiếm tiếng Việt);
  • Giảm độ tin cậy của trang do tín hiệu nhất quán bị phá vỡ — làm suy yếu cả authority quốc tế lẫn khả năng index;
  • Gây tổn thất lưu lượng từ các thị trường tiềm năng, đặc biệt với doanh nghiệp bán hàng xuyên biên giới.

Đây không phải lỗi kỹ thuật nhỏ — mà là rào cản chiến lược làm mất kiểm soát trải nghiệm người dùng và phân bổ quyền lực liên kết trên phạm vi toàn cầu.

Cách hoạt động

Hreflang và canonical đảm nhiệm vai trò khác nhau nhưng phải hỗ trợ lẫn nhau:

  • Hreflang nói với Google: “Đây là phiên bản tiếng Việt dành riêng cho người dùng tại Việt Nam” (hreflang="vi-VN"), và liệt kê đầy đủ các phiên bản tương ứng (tiếng Anh, tiếng Thái…).
  • Canonical nói với Google: “Trong số các phiên bản gần giống nhau, đây là phiên bản gốc/ưu tiên để lập chỉ mục” — nhưng chỉ áp dụng trong cùng một ngôn ngữ và khu vực, không dùng để chọn giữa các phiên bản ngôn ngữ khác nhau.

Khi hai thẻ mâu thuẫn — ví dụ: trang example.com/vi/rel="canonical" href="https://example.com/en/" nhưng lại khai báo hreflang="vi-VN" trỏ ngược lại — Google sẽ nghi ngờ tính nhất quán và có thể bỏ qua cả hai tín hiệu.

Hướng dẫn thực hiện

  1. Xác định rõ phiên bản gốc: Chỉ đặt canonical trên các trang có nội dung gần giống nhau về mặt ngôn ngữ và mục tiêu khu vực — ví dụ: example.com/vi/san-phamexample.com/vi/san-pham?sort=price có thể dùng canonical chung. Nhưng example.com/vi/example.com/th/ thì không bao giờ nên dùng canonical chéo.
  2. Mỗi phiên bản ngôn ngữ/khu vực phải có canonical trỏ về chính nó: Trang tiếng Việt → canonical = URL tiếng Việt; trang tiếng Thái → canonical = URL tiếng Thái.
  3. Khai báo hreflang đầy đủ và đôi chiều: Nếu có 3 phiên bản (vi-VN, en-US, th-TH), mỗi trang phải liệt kê cả 3 thẻ hreflang — bao gồm cả phiên bản chính nó (ví dụ: <link rel="alternate" hreflang="vi-VN" href="https://example.com/vi/">).
  4. Sử dụng công cụ kiểm tra: Dùng Hreflang Tester (Google Search Console), Screaming Frog hoặc Ahrefs Site Audit để quét tự động xung đột.
  5. Ưu tiên cấu trúc URL rõ ràng: Dùng subfolder (/vi/), subdomain (vi.example.com) hoặc miền quốc gia (example.vn). Tránh dùng tham số ngôn ngữ (?lang=vi) nếu không bắt buộc — vì hreflang khó quản lý hơn và dễ gây xung đột.

Lỗi thường gặp

Lỗi Dấu hiệu nhận biết Cách khắc phục
Canonical trỏ sang phiên bản ngôn ngữ khác Trang /vi/ có canonical = /en/ Chỉnh canonical về đúng URL hiện tại (/vi/)
Thiếu hreflang cho phiên bản chính nó Trang /vi/ chỉ khai báo hreflang cho en-USth-TH, không có vi-VN Thêm thẻ hreflang tự tham chiếu vào tất cả phiên bản
Hreflang trỏ tới URL không tồn tại hoặc trả mã 404 Google Search Console báo lỗi “Hreflang URL not found” Đảm bảo mọi URL trong hreflang đều trả mã 200 và có nội dung phù hợp
Dùng canonical trên trang hreflang nhưng thiếu thẻ hreflang ngược lại Trang /en/ có canonical = /en/ và hreflang cho vi-VN, nhưng trang /vi/ không khai báo hreflang cho en-US Cập nhật hreflang thành cặp đôi chiều đầy đủ trên mọi phiên bản

Ví dụ thực tế

Một thương hiệu thời trang Việt có trang sản phẩm tại 3 thị trường:

  • https://brand.com/vi/ao-thun — tiếng Việt, dành cho Việt Nam
  • https://brand.com/en/t-shirts — tiếng Anh, dành cho Mỹ
  • https://brand.com/th/เสื้อยืด — tiếng Thái, dành cho Thái Lan

Lỗi xung đột: Trang tiếng Việt có thẻ:

<link rel="canonical" href="https://brand.com/en/t-shirts">
<link rel="alternate" hreflang="vi-VN" href="https://brand.com/vi/ao-thun">
<link rel="alternate" hreflang="en-US" href="https://brand.com/en/t-shirts">
<link rel="alternate" hreflang="th-TH" href="https://brand.com/th/เสื้อยืด">

→ Đây là xung đột rõ ràng: canonical nói “đây là bản sao của trang tiếng Anh”, trong khi hreflang nói “đây là phiên bản tiếng Việt độc lập”. Google sẽ ưu tiên tín hiệu mạnh hơn (thường là canonical), dẫn đến việc phiên bản tiếng Việt không được index đúng cách.

Giải pháp đúng: Mỗi trang chỉ dùng canonical trỏ về chính nó, và hreflang luôn đầy đủ, đôi chiều — không loại trừ bất kỳ phiên bản nào.

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

Hreflang có cần thiết nếu chỉ có một phiên bản ngôn ngữ?

Không. Hreflang chỉ cần khi bạn có từ hai phiên bản ngôn ngữ hoặc khu vực trở lên. Nếu chỉ có tiếng Việt cho toàn bộ người dùng, bạn không cần hreflang — và cũng không có nguy cơ xung đột.

Có thể dùng canonical và hreflang cùng lúc không?

Có — và đây là cách làm chuẩn. Miễn là canonical trỏ về chính URL hiện tại (không chéo ngôn ngữ), còn hreflang liệt kê đầy đủ các phiên bản liên quan. Hai thẻ bổ trợ, không mâu thuẫn.

Nếu dùng miền quốc gia (ví dụ: brand.vn và brand.co.th), có cần hreflang không?

Có. Miền quốc gia không tự động thay thế hreflang. Google vẫn cần biết mối quan hệ giữa các phiên bản — ví dụ: brand.vnvi-VN, brand.co.thth-TH. Việc thiếu hreflang có thể khiến Google xử lý các miền như các trang độc lập, không liên hệ — dẫn đến trùng lặp nội dung hoặc phân bổ sai lưu lượng.