Tạo thẻ hreflang

Sinh thẻ hreflang cho các phiên bản ngôn ngữ của trang, kiểm mã ngôn ngữ và vùng theo chuẩn, tự thêm x-default. Dán vào head hoặc khai qua sitemap.

  • Miễn phí
  • Chạy trong trình duyệt
  • Không cần đăng ký
Quả địa cầu cạnh hai trang ngôn ngữ, minh hoạ thẻ hreflang

Dán danh sách mã ngôn ngữ và URL, nhận lại ba dạng thẻ hreflang: thẻ <link> cho phần head, khối <url> cho sitemap XML, và trường Link của HTTP header.

Tool soi luôn ba lỗi khó thấy khi đọc từng thẻ một: mã sai chuẩn, hai mã cùng trỏ về một URL, và thiếu thẻ tự trỏ. Cái cuối nặng nhất.

Đang tải công cụ…

Dùng khi nào

Site có nhiều bản ngôn ngữ và bạn cần khai cho Google biết bản nào dành cho ai. Bản tiếng Việt, bản tiếng Anh, bản tiếng Anh riêng cho thị trường Anh quốc.

Lúc dựng sitemap XML cho site đa ngôn ngữ. Khai hreflang trong sitemap gọn hơn hẳn so với nhét hàng chục thẻ link vào head của từng trang, nhất là khi bộ ngôn ngữ còn thay đổi.

Lúc phải khai hreflang cho file PDF hoặc file không phải HTML. Không có head nên chỉ còn đường HTTP header.

Và lúc bạn nghi bộ hreflang hiện tại đang sai mà chưa biết sai chỗ nào. Dán vào, các cảnh báo chỉ ra chỗ hỏng.

Làm SEO nhiều ngôn ngữ cho cả site một cách bài bản thì xem dịch vụ SEO tổng thể.

Tool này tính thế nào

Mỗi dòng đầu vào là một cặp: mã ngôn ngữ, dấu gạch đứng, rồi URL đầy đủ. Dán từ bảng tính thì dấu tab cũng ăn, và cột trống ở giữa cũng không sao: tool lấy URL ở cột đầu tiên có chữ chứ không chốt cứng cột thứ hai. Dán một vùng ba cột mà cột giữa rỗng là chuyện thường, không đáng để mất sạch danh sách.

Dòng còn dư cột thì tool cắt bỏ phần thừa và báo rõ dòng nào bị cắt, chứ không để nó dính vào URL. Hai kiểu ngăn cột nhận hai câu khác nhau, vì bệnh khác nhau. Dán bằng tab thì phần dư đúng là cột ghi chú, tool báo màu thường. Gõ tay bằng dấu gạch đứng thì phần dư ăn cảnh báo đỏ, vì nó rất có thể là một mảnh của chính URL — lúc đó thẻ xuất ra trỏ về một địa chỉ khác cái bạn gõ. RFC 3986 không cho dấu gạch đứng nằm trần trong URL, muốn giữ nó thì viết thành %7C.

Mã ngôn ngữ tool dựng được là hai chữ cái theo ISO 639-1, kèm mã vùng hai chữ cái theo ISO 3166-1 alpha-2 nếu cần, ví dụ vi hoặc vi-VN. Tool đối chiếu với bảng mã thật thay vì đếm số chữ cái, nên zz hay zz-Qqqq đều bị chặn. Một bẫy hay dính: mã vùng của Vương quốc Anh là GB, không phải UK, và tool nói thẳng điều đó khi bạn gõ nhầm.

Mã đúng cú pháp RFC 5646 mà nằm ngoài vùng tool dựng được thì nhận một câu khác hẳn và không bị tô đỏ. Tool nói là nó chưa dựng được mã đó, chứ không bảo mã của bạn sai. Xem mục Giới hạn bên dưới để biết bốn dạng nào rơi vào nhóm này.

URL phải đầy đủ, có cả phần http hoặc https ở đầu. Đây là yêu cầu ghi trong tài liệu hreflang của Google Search Central. Đường dẫn rút gọn kiểu /en/ bị loại khỏi kết quả chứ tool không tự đoán thành URL tuyệt đối, vì đoán sai domain là hỏng cả bộ.

Thẻ tự trỏ. Điền URL của trang bạn đang đặt thẻ vào ô “Trang bạn đang đặt thẻ”, tool kiểm xem URL đó có nằm trong danh sách không. Ô đó đi qua đúng vòng kiểm như mọi URL khác: thiếu https ở đầu, dính khoảng trắng, dấu ngoặc nhọn hay ký tự vô hình là tool không nhận, chứ không nhận bừa rồi tuồn vào kết quả. Google Search Central yêu cầu mỗi bản trong bộ phải liệt kê chính nó; còn khi liên kết không đủ hai chiều thì tài liệu nói các chú thích có thể bị bỏ qua hoặc bị hiểu sai. Tool tô đỏ cảnh báo này vì rủi ro đủ lớn, nhưng nói đúng mức của nguồn.

Tính đối xứng. Trang A trỏ tới B thì B cũng phải trỏ lại A, đây cũng là điều kiện trong tài liệu của Google. Tool chỉ nhìn được một bộ nên nó không tự kiểm được vế này. Nhưng có cách làm cho nó luôn đúng: dán đủ mọi URL của bộ vào ô nhập, rồi đặt đúng khối kết quả đó lên mọi URL trong danh sách. Khối giống nhau ở mọi trang thì đối xứng tự có.

Về phần thoát ký tự, dấu & trong URL được đổi thành &amp; ở dạng thẻ link và dạng sitemap, vì hai chỗ đó là thuộc tính trong HTML và XML. Dạng HTTP header giữ nguyên dấu &. Đổi ở đó là đổi luôn URL.

Dạng HTTP header xuất mỗi thẻ thành một dòng Link riêng. RFC 8288 khai Link là trường kiểu danh sách, nên lặp nhiều dòng hay gộp một dòng ngăn bằng dấu phẩy đều hợp lệ. Lặp dòng dễ đọc hơn khi bộ ngôn ngữ dài.

Khối sitemap cần thẻ <urlset> bao ngoài có khai namespace xhtml. Dòng khai đầy đủ:

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml">

Khối <url> mà tool xuất ra nằm bên trong thẻ đó. Mỗi URL trong bộ cần một khối riêng, và khối nào cũng phải chứa đủ danh sách alternate, kể cả thẻ trỏ về chính nó.

Ở dạng sitemap, ô “Trang bạn đang đặt thẻ” còn quyết định thẻ <loc>, tức khối này gắn vào trang nào. Bỏ trống hoặc điền sai thì tool lấy tạm URL của dòng hợp lệ đầu tiên và nói thẳng ra rằng nó đang lấy tạm — đừng copy đi khi dòng cảnh báo đó còn đỏ.

Giới hạn đã biết

Tool không mở URL để kiểm trang còn sống hay không, cũng không đọc trang đích để xem nó có trỏ ngược lại hay không. Nó làm việc trên chuỗi, không gọi mạng.

So URL trùng là so từng ký tự. https://example.com/ahttps://example.com/a/ bị coi là hai URL khác nhau, dù máy chủ trả về cùng một trang. Muốn gom trước thì chạy danh sách qua tool làm sạch danh sách URL rồi mang sang đây.

Tool chỉ dựng mã theo đúng dạng ghi trong tài liệu Google, tức ISO 639-1 kèm mã vùng ISO 3166-1 tuỳ chọn. Bốn dạng dưới đây đúng cú pháp RFC 5646 nhưng nằm ngoài vùng đó, nên tool bỏ dòng và nói thẳng là nó chưa dựng được — mấy dòng ấy bạn viết tay.

Một, mã có phần chữ viết như zh-Hant, phần Hant là mã chữ viết ISO 15924. Hai, mã vùng ba chữ số theo UN M.49 như es-419 hay en-001, RFC 5646 mục 2.2.4 cho phép mã vùng là hai chữ cái hoặc ba chữ số. Ba, mã ngôn ngữ ba chữ cái theo ISO 639-2 hoặc 639-3 như fil, tool chỉ giữ bảng ISO 639-1 hai chữ cái nên không đối chiếu được; ngôn ngữ nào có sẵn mã hai chữ cái thì RFC 5646 khuyên dùng mã hai chữ cái. Bốn, mã có phần biến thể như de-CH-1901.

Ranh giới ở đây là ranh giới giữa “mã của bạn hỏng” và “tool chưa với tới”. Mã hỏng thật — sai khung thẻ, hoặc mã ngôn ngữ và mã vùng không có trong bảng — vẫn tô đỏ như cũ.

Danh sách dài mà sai nhiều thì tool không in hết cảnh báo: mười lăm cảnh báo theo dòng đầu tiên, năm cảnh báo “một URL nhận nhiều mã” đầu tiên, mỗi nhóm kèm một dòng đếm phần còn lại. Cảnh báo nói về cả bộ — thẻ tự trỏ, ô trang đang đặt thẻ, thẻ <loc> — thì luôn in đủ, vì mỗi loại chỉ có đúng một câu và bỏ sót một cái là hỏng cả bộ.

Tool không sinh thẻ canonical. Hai thứ khác nhau. Đặt canonical của bản tiếng Anh trỏ về bản tiếng Việt là cách nhanh nhất để xoá bản tiếng Anh khỏi kết quả tìm kiếm, và không cảnh báo hreflang nào cứu được chuyện đó.

Câu hỏi hay gặp

Đặt hreflang ở head, ở sitemap hay ở HTTP header thì hơn?

Tài liệu Google nêu ba cách và không xếp cách nào trên cách nào, nên chọn chỗ dễ bảo trì nhất cho site của bạn. Head hợp với site ít trang. Sitemap hợp với site nhiều ngôn ngữ và nhiều trang, vì sửa một file thay cho sửa hàng trăm trang. HTTP header dành cho file không phải HTML, chẳng hạn PDF. Chỉ đừng khai cùng lúc ở hai chỗ với nội dung lệch nhau.

x-default để làm gì?

Nó chỉ ra trang dành cho người không khớp với ngôn ngữ hay vùng nào bạn đã khai. Thường là trang chọn ngôn ngữ, hoặc bản mặc định của site.

Tool có hai đường làm việc này. Muốn x-default trỏ về một bản đã khai thì tick ô “Thêm dòng x-default”, rồi chọn mã ở ô bên cạnh — ô đó chỉ bấm được khi đã tick và trong ô nhập đang có ít nhất một dòng hợp lệ. Muốn nó trỏ ra một URL không nằm trong danh sách, mà trang chọn ngôn ngữ đúng là ca đó vì nó không phải bản dịch nào cả, thì gõ thẳng một dòng x-default | URL vào ô nhập. Gõ tay thì ô tick nhường chỗ và tool báo cho bạn biết, để hai đường không đá nhau.

Thiếu thẻ tự trỏ thì chuyện gì xảy ra?

Tài liệu hreflang của Google Search Central đặt ra hai điều: mỗi bản trong bộ phải liệt kê chính nó, và các trang phải trỏ lẫn nhau đủ hai chiều. Khi hai điều đó không đủ, tài liệu nói các chú thích có thể bị bỏ qua hoặc bị hiểu sai — đó là nguyên văn mức độ họ nói, không phải một lời hứa chắc rằng cả bộ sẽ chết. Nhưng bỏ qua cả bộ là kết cục nằm trong khoảng đó, nên tool tô đỏ. Và đây là lỗi hay gặp nhất khi sinh thẻ bằng tay: người ta liệt kê đủ các bản dịch mà quên chính trang đang đứng.

Dữ liệu tôi dán vào có bị gửi đi đâu không?

Không. Toàn bộ xử lý chạy trong trình duyệt của bạn, kể cả khi bạn dán cấu trúc URL nội bộ chưa công bố.

Công cụ này dùng được không?

Chưa có lượt nào. Bạn là người đầu tiên.

Nhúng công cụ này vào website của bạn

Dán đoạn mã dưới đây vào trang của bạn. Công cụ vẫn chạy trong trình duyệt người đọc, không gửi dữ liệu đi đâu. Khung nhúng có sẵn một dòng ghi nguồn trỏ về trang này.

Trần Tiến
Về tác giả

Trần Tiến

Founder, Tài Nguyên SEO

Dân IT rẽ sang SEO từ 2022. Tự tay xử lý hơn 10.000 đơn offpage trước khi lập công ty. Tin vào việc bàn giao bằng số tra cứu được, và nói thẳng cả khi mất đơn.

Cử nhân CNTT Chứng chỉ SEO của Google Offpage/Backlink YMYL Technical SEO GEO