hreflang cho site nhiều ngôn ngữ: tự tham chiếu, x-default và các lỗi làm Google bỏ qua
hreflang cho Google biết các phiên bản ngôn ngữ của cùng một trang để hiện đúng bản cho đúng người, không làm tăng thứ hạng. Muốn có tác dụng, mã ngôn ngữ phải hợp lệ (vi, không phải vn), URL tuyệt đối, và mỗi bản khai đủ mọi bản kể cả chính nó.
hreflang là cách bạn nói với Google: "trang này có bản tiếng Anh ở địa chỉ kia, bản tiếng Việt ở địa chỉ này, hãy đưa đúng bản cho đúng người". Nó không làm trang lên hạng, cũng không thay được canonical; việc của nó là chọn đúng phiên bản để hiện cho người tìm bằng tiếng Việt hay tiếng Anh. Để Google tin, khai báo phải thoả ba điều: mã ngôn ngữ hợp lệ, URL tuyệt đối, và mỗi phiên bản liệt kê đủ mọi phiên bản kể cả chính nó, các trang trỏ qua lại cho nhau. Thiếu một vế, Google có thể lặng lẽ bỏ qua toàn bộ cụm.
Khai báo mẫu cho site Việt có bản tiếng Anh
Trên cả hai trang https://vidu.com/bang-gia và https://vidu.com/en/pricing, phần <head> chứa cùng một bộ:
<link rel="alternate" hreflang="vi" href="https://vidu.com/bang-gia">
<link rel="alternate" hreflang="en" href="https://vidu.com/en/pricing">
<link rel="alternate" hreflang="x-default" href="https://vidu.com/bang-gia">
Trang tiếng Việt có dòng trỏ về chính nó, trang tiếng Anh cũng vậy. Đó là phần tự tham chiếu mà nhiều cấu hình bỏ sót. x-default là bản dành cho người dùng không khớp ngôn ngữ nào đã khai, thường là trang chọn ngôn ngữ hoặc bản chính của site.
Ba cách khai báo tương đương nhau, chọn một và dùng nhất quán:
| Cách | Hợp với | Lưu ý |
|---|---|---|
Thẻ <link> trong <head> | Site vài ngôn ngữ, mẫu giao diện dễ sửa | Thẻ phải nằm trong head; nằm trong body bị bỏ qua |
Tiêu đề HTTP Link | Tệp không phải HTML như PDF | Khó kiểm bằng mắt, dễ quên khi đổi máy chủ |
Sitemap với xhtml:link | Site lớn, nhiều ngôn ngữ, không muốn phình head | Mỗi URL trong sitemap liệt kê đủ các bản, kể cả chính nó |
Khai trong sitemap thì mỗi phiên bản là một thẻ <url> riêng, và trong mỗi thẻ lặp lại đủ bộ liên kết thay thế, kể cả dòng trỏ về chính nó:
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>https://vidu.com/bang-gia</loc>
<xhtml:link rel="alternate" hreflang="vi" href="https://vidu.com/bang-gia"/>
<xhtml:link rel="alternate" hreflang="en" href="https://vidu.com/en/pricing"/>
</url>
<url>
<loc>https://vidu.com/en/pricing</loc>
<xhtml:link rel="alternate" hreflang="vi" href="https://vidu.com/bang-gia"/>
<xhtml:link rel="alternate" hreflang="en" href="https://vidu.com/en/pricing"/>
</url>
</urlset>
Đừng trộn hai cách cho cùng một cụm trang (một nửa khai trong head, một nửa trong sitemap) rồi để hai nơi lệch nhau: khi có mâu thuẫn, bạn không biết Google đang tin nguồn nào. Cách khai sitemap nói chung có ở bài sitemap XML.
Mã ngôn ngữ: chỗ người Việt hay sai nhất
Giá trị hreflang gồm mã ngôn ngữ theo ISO 639-1, tuỳ chọn thêm mã vùng theo ISO 3166-1 alpha-2: vi, vi-VN, en, en-US, en-GB, zh-Hans (chữ giản thể) cũng hợp lệ.
vnkhông phải mã ngôn ngữ. Tiếng Việt làvi;VNlà mã quốc gia.hreflang="vn"là lỗi phổ biến nhất ở site Việt, và Google bỏ qua dòng đó.- Chỉ có mã vùng là sai.
hreflang="us"không hợp lệ; phải làen-US. en-UKsai, Vương quốc Anh làGB.- Không cần thêm vùng nếu nội dung giống nhau cho mọi nơi dùng ngôn ngữ đó. Một bản tiếng Anh cho cả thế giới thì
enlà đủ; chỉ táchen-US,en-GBkhi giá, đơn vị tiền, cách viết thật sự khác nhau.
Thuộc tính lang trên thẻ <html> là chuyện khác: Google đã nói nó không dựa vào thuộc tính này để xác định ngôn ngữ trang mà tự nhận từ nội dung. Nhưng trình đọc màn hình, trình dịch của trình duyệt và nhiều công cụ khác dùng nó, nên vẫn khai <html lang="vi"> đúng ngôn ngữ của từng bản. SEO Gốc dành 1 điểm cho thuộc tính này.
Lỗi hay gặp
Canonical của mọi bản trỏ về bản tiếng Việt
Đây là lỗi làm hỏng cả cụm. Bản tiếng Anh có rel="canonical" trỏ về trang tiếng Việt nghĩa là "trang này là bản sao, đừng lập chỉ mục nó". Google nghe theo canonical và bỏ bản tiếng Anh khỏi chỉ mục; hreflang trỏ tới một trang không được lập chỉ mục thì vô nghĩa. Mỗi phiên bản ngôn ngữ phải có canonical tự trỏ về chính nó. Bài thẻ canonical nói kỹ cách viết.
Thiếu liên kết trả về
Trang tiếng Việt khai bản tiếng Anh, nhưng trang tiếng Anh (thường do một nhóm khác làm, hoặc mẫu giao diện khác) không khai lại. Google cần xác nhận từ hai phía để tránh trường hợp ai đó tự nhận trang người khác là bản dịch của mình. Báo cáo hreflang cũ trong Search Console đã bị bỏ, nên lỗi này không còn được báo trực tiếp; phải tự kiểm hoặc dùng công cụ thu thập.
URL tương đối hoặc trỏ vào trang chuyển hướng
href="/en/pricing" không hợp lệ cho hreflang, phải có đầy đủ https:// và tên máy. Trỏ vào URL đang chuyển hướng (bản http://, bản có www trong khi site đã gom về không-www) hoặc trả 404 cũng làm cặp đó mất tác dụng. Sau mỗi lần đổi cấu trúc URL hay gom tên máy, rà lại hreflang.
Trỏ mọi trang về trang chủ bản kia
Bài tiếng Việt chưa có bản dịch, mẫu giao diện vẫn in hreflang tiếng Anh trỏ về trang chủ /en/. Hai trang không phải là bản dịch của nhau, Google sẽ bỏ qua hoặc hiểu sai. Trang nào chưa có bản dịch thì không in dòng cho ngôn ngữ đó.
Tự chuyển hướng theo IP
Site đọc IP khách, thấy từ nước ngoài thì chuyển sang bản tiếng Anh. Googlebot thu thập chủ yếu từ địa chỉ IP ở Mỹ, nên nó có thể không bao giờ thấy bản tiếng Việt. Google khuyên không tự chuyển hướng theo vị trí hay ngôn ngữ trình duyệt; thay vào đó hiện một dải gợi ý "Xem bản tiếng Việt" và để hreflang làm phần việc với kết quả tìm kiếm.
Dịch máy rồi khai hreflang hàng loạt
hreflang khai đúng không cứu được nội dung kém. Bản dịch máy chưa ai đọc lại, bỏ nguyên đơn vị tiền và số điện thoại Việt Nam, dễ bị coi là nội dung giá trị thấp. Với site nhỏ, một bản tiếng Anh ít trang nhưng viết tử tế đáng hơn nghìn trang dịch máy; chuyện ranh giới của nội dung sinh hàng loạt có ở bài viết bài hàng loạt bằng AI.
Những việc không cần làm
- Site chỉ có một ngôn ngữ thì không cần hreflang, kể cả khi muốn nhắm khách Việt ở nước ngoài. Không có hreflang không bị trừ điểm gì; SEO Gốc chỉ chấm tiêu chí này khi trang có khai.
- Không cần khai hreflang cho trang có
noindexhoặc trang không có bản tương ứng. - Không cần chọn tên miền quốc gia riêng (
.vn,.com) chỉ để làm đa ngôn ngữ; thư mục/en/trên cùng tên miền là cách dễ quản nhất.
Danh sách kiểm một cụm hreflang
- Mọi giá trị là mã hợp lệ:
vichứ không phảivn; vùng đi kèm ngôn ngữ. - Mọi
hreflà URL tuyệt đối, trả 200, đúng dạng chính thức (https, đúng www). - Mỗi trang trong cụm khai đủ mọi bản, kể cả chính nó.
- Các bản khai giống hệt nhau về tập trang (trang A khai B, C thì B và C cũng khai A, B, C).
- Canonical của mỗi bản tự trỏ về chính nó.
- Có
x-defaultnếu có trang chọn ngôn ngữ hoặc một bản mặc định. <html lang>khớp ngôn ngữ thật của từng bản.- Không tự chuyển hướng theo IP.
Kiểm bằng SEO Gốc
Chấm điểm trang đọc các thẻ link rel="alternate" hreflang trên trang bạn nhập: báo mã sai và URL tương đối (lỗi hreflang_loi), báo khi bộ khai thiếu dòng tự tham chiếu (lỗi hreflang_thieu_tu), và kiểm thuộc tính lang. Công cụ chỉ đọc một trang nên không kiểm được liên kết trả về; nhập lần lượt từng bản ngôn ngữ để so. Trọng số các mục ở thang chấm điểm; tài liệu chính chủ ở Google Search Central.
Hỏi đáp
Mã hreflang cho tiếng Việt là gì?
Là vi, hoặc vi-VN nếu muốn nhắm riêng người dùng ở Việt Nam. Viết vn là sai vì đó là mã quốc gia, không phải mã ngôn ngữ, và Google bỏ qua dòng đó.
Site chỉ có tiếng Việt có cần hreflang không?
Không cần. hreflang chỉ dùng khi có từ hai phiên bản ngôn ngữ hoặc vùng của cùng nội dung. Không khai không bị trừ điểm gì.
hreflang và canonical khác nhau thế nào?
Canonical chọn bản chính giữa các trang trùng nội dung; hreflang nối các bản khác ngôn ngữ của cùng nội dung. Mỗi bản ngôn ngữ phải có canonical tự trỏ về chính nó, nếu trỏ sang bản khác thì bản đó bị loại khỏi chỉ mục.
x-default dùng để làm gì?
Chỉ định trang hiện cho người dùng không khớp ngôn ngữ nào đã khai, thường là trang chọn ngôn ngữ hoặc bản mặc định. Không bắt buộc nhưng nên có khi site có trang chọn ngôn ngữ.
Đọc tiếp
Thẻ canonical: viết đúng, các lỗi hay gặp và lúc Google bỏ qua nó
Thẻ canonical cho Google biết đâu là địa chỉ chính khi một nội dung có nhiều địa chỉ. Viết đúng là địa chỉ tuyệt đối, https, đúng tên miền…
Chuyển hướng 301, 302, gom www và HTTPS: làm một lần cho đúng
Mọi biến thể http và www phải chuyển hướng vĩnh viễn 301 về một địa chỉ chính thức trong đúng một bước. 302 là chuyển tạm, cho Google tín h…
Sitemap XML: cấu trúc, giới hạn 50.000 địa chỉ, lastmod và những thứ không nên đưa vào
Sitemap XML liệt kê những địa chỉ bạn muốn Google biết tới. Sitemap tốt chỉ chứa trang trả 200, đúng bản chính tắc, có lastmod trung thực v…
Viết bài hàng loạt bằng AI: chính sách lạm dụng nội dung quy mô lớn và ranh giới an toàn
Google không cấm dùng AI để viết. Thứ bị cấm là tạo ra nhiều trang chủ yếu để thao túng thứ hạng mà không giúp người đọc, bất kể trang do m…