Hreflang là thuộc tính giúp Google hiểu những URL nào là phiên bản ngôn ngữ hoặc khu vực của cùng một nội dung. Khi triển khai đúng, Google có thêm tín hiệu để đưa người dùng tới phiên bản phù hợp, chẳng hạn trang tiếng Việt, tiếng Anh hoặc tiếng Anh dành cho thị trường Anh.
Tóm tắt nhanh: Chỉ dùng hreflang khi mỗi locale có URL riêng và các trang cùng một intent. Mỗi URL phải tự tham chiếu, liệt kê các phiên bản còn lại và có liên kết quay lại. Chọn một trong ba cách: HTML, HTTP header hoặc XML sitemap. Hreflang không thay canonical, không tự tạo bản dịch và không bảo đảm URL được index.
Khi nào website cần hreflang?
| Tình huống | Cách xử lý |
|---|---|
| Cùng dịch vụ có trang tiếng Việt và tiếng Anh | Dùng hreflang nếu hai URL cùng nhiệm vụ. |
| Cùng tiếng Anh nhưng giá, chính sách hoặc nội dung khác giữa Mỹ và Anh | Có thể dùng en-US và en-GB. |
| Website chỉ có một ngôn ngữ và một thị trường | Không cần hreflang. |
| Trang chọn quốc gia hoặc ngôn ngữ | Cân nhắc dùng x-default. |
| Các trang nói về sản phẩm hoặc intent khác nhau | Không đưa vào cùng cụm hreflang. |
Google khuyến nghị khai báo các phiên bản thay thế khi nội dung được dịch, có khác biệt theo vùng hoặc chỉ phần giao diện được dịch. Google vẫn tự xác định ngôn ngữ từ nội dung trang; thuộc tính hreflang dùng để mô tả quan hệ giữa các URL được bản địa hóa. Xem tài liệu chính thức về localized versions.
Việc chọn ccTLD, subdomain hay thư mục con thuộc bài toán cấu trúc URL cho SEO quốc tế. Hreflang chỉ ánh xạ các URL sau khi cấu trúc và phạm vi thị trường đã rõ.
Một cụm hreflang đúng cần những gì?

- Dùng URL tuyệt đối, gồm giao thức, tên miền và đường dẫn.
- Mỗi trang tự khai báo chính nó.
- Mỗi cặp URL có liên kết hai chiều.
- Các trang trong cụm phục vụ cùng intent.
- URL đích trả về trạng thái phù hợp và có thể index.
- Bộ annotation giống nhau trên các phiên bản của cụm.
Ví dụ, trang /vi/dich-vu-seo/ không nên được ghép với /en/digital-marketing-guide/ chỉ vì cùng nhắc đến SEO. Hai trang cần là phiên bản tương đương về nhiệm vụ, dù nội dung có thể được điều chỉnh cho từng thị trường.
Ba cách triển khai hreflang
Google xem ba phương pháp dưới đây là tương đương. Dùng đồng thời cả ba không mang lại lợi ích tìm kiếm và làm tăng nguy cơ dữ liệu không nhất quán. Hãy chọn nguồn dữ liệu dễ duy trì nhất.
1. Khai báo trong HTML
Phù hợp với website nhỏ hoặc vừa khi CMS có thể sinh annotation ổn định trong phần <head>. Mỗi phiên bản phải chứa cùng một bộ thẻ:
<link rel="alternate" hreflang="vi"
href="https://example.com/vi/dich-vu-seo/" />
<link rel="alternate" hreflang="en"
href="https://example.com/en/seo-services/" />
<link rel="alternate" hreflang="x-default"
href="https://example.com/language-selector/" />
2. Khai báo bằng HTTP header
Phương pháp này hữu ích cho PDF hoặc tệp không có HTML head. Header của từng phiên bản phải liệt kê đầy đủ các URL thay thế và chính URL đang được yêu cầu.
Link: <https://example.com/file-en.pdf>; rel="alternate"; hreflang="en",
<https://example.com/file-vi.pdf>; rel="alternate"; hreflang="vi"
3. Khai báo trong XML sitemap
Phù hợp với website lớn hoặc nhiều locale vì có thể quản trị tập trung. Mỗi phần tử URL phải có các xhtml:link cho toàn bộ phiên bản, gồm cả chính nó. Cần khai báo namespace xhtml và giữ cluster đồng nhất trên mọi URL.
Với WordPress, plugin đa ngôn ngữ có thể sinh hreflang tự động, nhưng vẫn cần kiểm tra HTML thực tế. Lỗi thường đến từ bản dịch chưa xuất bản, URL bị đổi, cache cũ hoặc hai plugin cùng sinh annotation.
Cách dùng mã ngôn ngữ, khu vực và x-default
- Mã đầu tiên là ngôn ngữ theo ISO 639-1:
vi,en,de. - Mã thứ hai, nếu có, là khu vực theo ISO 3166-1 Alpha 2:
en-US,en-GB. - Không dùng mã quốc gia đứng một mình.
- Không dùng
en-UK; mã khu vực phù hợp làGB. - Có thể dùng mã script như
zh-Hansvàzh-Hantkhi cần.
x-default là trang dự phòng khi không có ngôn ngữ hoặc khu vực nào khớp cài đặt của người dùng. Nó phù hợp với trang chọn ngôn ngữ, trang chủ trung lập hoặc phiên bản mặc định. x-default không phải canonical mặc định và không thay cho một phiên bản ngôn ngữ cụ thể.
Hreflang và canonical phối hợp thế nào?
Nếu các phiên bản locale đều cần xuất hiện riêng trên Google, mỗi URL thường nên self-canonical và cùng tham gia một cụm hreflang. Không canonical trang tiếng Anh về trang tiếng Việt chỉ vì cấu trúc hoặc nội dung tương tự; điều đó tạo tín hiệu mâu thuẫn với mục tiêu giữ cả hai URL.
| Tình huống | Xử lý |
|---|---|
| Trang vi và en đều cần index | Mỗi trang self-canonical và hreflang qua lại. |
| URL tham số là bản trùng trong cùng locale | Canonical về URL sạch của locale đó. |
| URL chuyển hướng, noindex hoặc 404 | Sửa trạng thái hoặc loại khỏi cụm. |
| Google chọn canonical khác dự kiến | Kiểm tra nội dung, redirect, canonical, internal link và sitemap trước khi quy lỗi cho hreflang. |
Canonical là tín hiệu chọn URL đại diện cho nội dung trùng hoặc rất giống; hreflang mô tả các phiên bản được bản địa hóa. Hai annotation giải quyết hai nhiệm vụ khác nhau. Xem hướng dẫn Google về canonicalization.
Quy trình audit hreflang từng bước
- Lập danh sách cluster: mỗi hàng là một nội dung, mỗi cột là một locale.
- Kiểm tra URL: status 200, indexability, canonical và nội dung đúng ngôn ngữ.
- Đọc annotation thực tế: kiểm tra HTML source, HTTP header hoặc sitemap theo phương pháp đang dùng.
- Kiểm tra self-reference: mỗi URL có khai báo chính nó.
- Kiểm tra return link: URL A trỏ B thì B phải trỏ lại A.
- Kiểm tra mã locale: đúng ngôn ngữ, khu vực và thứ tự.
- So sánh toàn cluster: các trang có cùng bộ URL và cùng intent.
- Thu thập lại sau khi sửa: xóa cache, crawl lại và theo dõi URL Google chọn.
Audit một URL riêng lẻ chưa đủ vì lỗi hreflang thường nằm ở quan hệ giữa các trang. Với website lớn, hãy so sánh theo ma trận và ưu tiên các cluster quan trọng như trang chủ, danh mục, sản phẩm và trang dịch vụ.
Lỗi hreflang thường gặp và cách sửa
| Lỗi | Nguyên nhân | Cách sửa |
|---|---|---|
| Missing return link | Một trang không trỏ lại trang còn lại | Đồng bộ bộ annotation hai chiều. |
| Mã locale sai | Dùng mã tự tạo hoặc chỉ dùng quốc gia | Đối chiếu chuẩn language–region. |
| Trỏ tới redirect hoặc 404 | URL đã đổi nhưng cấu hình chưa cập nhật | Trỏ thẳng URL cuối cùng, hợp lệ. |
| Canonical sang locale khác | Cấu hình canonical toàn site hoặc template sai | Đặt self-canonical cho phiên bản cần index. |
| HTML và sitemap khác nhau | Nhiều hệ thống cùng quản lý | Chọn một nguồn dữ liệu hoặc đồng bộ hoàn toàn. |
| Cluster ghép sai intent | Map theo slug thay vì nhiệm vụ trang | Rà soát nội dung và phân lại URL owner. |
| Annotation lúc có lúc không | Cache, CDN hoặc geo-routing | Kiểm tra phản hồi từ nhiều vị trí và xóa cache. |
Nếu website tự động chuyển hướng theo IP, hãy bảo đảm người dùng và bot vẫn truy cập được từng URL, có bộ chọn ngôn ngữ crawlable và không bị ép quay về một phiên bản. Các vấn đề CDN, cache và định tuyến theo vùng được trình bày trong bài hosting cho International SEO.
Checklist trước khi triển khai
- Mỗi locale có URL riêng và nội dung đúng ngôn ngữ.
- Các trang trong cluster cùng intent.
- Đã chọn một phương pháp triển khai chính.
- URL tuyệt đối, self-reference và return link đầy đủ.
- Mã ngôn ngữ–khu vực hợp lệ.
- Canonical, robots và status không mâu thuẫn.
x-defaulttrỏ đúng trang dự phòng nếu cần.- Plugin, cache và sitemap không sinh bộ annotation khác nhau.
- Có quy trình cập nhật khi thêm, xóa hoặc đổi URL locale.
Hreflang chỉ nên triển khai sau khi xác định thị trường và nội dung. Tham khảo thêm nghiên cứu từ khóa quốc tế, kế hoạch nội dung đa quốc gia, dịch và bản địa hóa nội dung.
Câu hỏi thường gặp
Có cần dùng cả HTML và sitemap không?
Không cần. Google xem ba phương pháp là tương đương. Một nguồn dữ liệu chính xác, ổn định và dễ bảo trì tốt hơn nhiều cấu hình có nguy cơ mâu thuẫn.
Trang chưa dịch xong có nên đưa vào cluster?
Không nên đưa URL nháp, noindex hoặc nội dung chưa hoàn chỉnh vào cụm đang hoạt động. Chỉ thêm khi trang đã xuất bản, đúng intent và có thể index.
Hreflang sai có làm website bị phạt không?
Lỗi thường khiến annotation bị bỏ qua hoặc phiên bản hiển thị không như mong muốn. Cách xử lý là sửa cluster và kiểm tra lại, không phải tăng thêm thẻ hoặc lặp triển khai ở nhiều nơi.
Kết luận
Hreflang là bản đồ quan hệ giữa các phiên bản ngôn ngữ và khu vực. Muốn triển khai đúng, hãy bắt đầu từ URL riêng và nội dung cùng intent, chọn một phương pháp, bảo đảm self-reference, liên kết hai chiều, canonical phù hợp rồi audit toàn cluster. Hreflang không thể bù cho cấu trúc URL sai hoặc nội dung bản địa hóa kém.
Đoàn Trình Dục là Giảng viên Khoa Công nghệ Thông tin tại Đại học Công nghệ Sài Gòn (STU), với hơn 10 năm kinh nghiệm thực chiến trong các lĩnh vực Mạng máy tính, Marketing Online, SEO và Bảo mật hệ thống.
Với nền tảng sư phạm và kinh nghiệm tư vấn cho nhiều doanh nghiệp, thầy chuyên sâu vào việc xây dựng các giải pháp kỹ thuật số toàn diện và hiệu quả.

