International SEO

international breadcrumb markup

Đánh dấu dữ liệu có cấu trúc breadcrumbs phù hợp với locale và cấu trúc URL đa vùng để hỗ trợ hiển thị kết quả tìm kiếm.

6 lượt xem Cập nhật: 29/05/2026

international breadcrumb markup là gì?

International breadcrumb markup là cách đánh dấu dữ liệu có cấu trúc (schema.org BreadcrumbList) cho thanh điều hướng dạng bánh mì (breadcrumbs), được tối ưu riêng theo ngôn ngữ, khu vực và cấu trúc URL đa vùng — ví dụ: vi-vn.example.com, en-us.example.com, fr-fr.example.com hoặc example.com/vi/, example.com/en/. Khác với breadcrumbs thông thường, phiên bản quốc tế phải phản ánh đúng thứ bậc nội dung theo locale: tên danh mục, đường dẫn URL và thuộc tính @id đều tuân thủ chuẩn hreflang, mã ngôn ngữ (BCP 47), và logic phân vùng địa lý.

Tại sao quan trọng trong SEO?

Khi trang web phục vụ nhiều quốc gia/ngôn ngữ, Google cần hiểu rõ mối liên hệ giữa các phiên bản của cùng một nội dung. International breadcrumb markup giúp:

  • Giúp công cụ tìm kiếm xác định chính xác phiên bản nào dành cho người dùng ở khu vực nào — đặc biệt khi dùng URL subdirectory (/vi/, /de/) hoặc subdomain;
  • Tăng khả năng hiển thị breadcrumbs đa ngôn ngữ trong kết quả tìm kiếm — ví dụ: người dùng tại Thái Lan thấy breadcrumbs tiếng Thái dù đang tìm trên google.com;
  • Hỗ trợ thuật toán hiểu cấu trúc site theo từng thị trường, từ đó cải thiện độ tin cậy của tín hiệu hreflang và giảm xung đột nội dung trùng lặp;
  • Không trực tiếp ảnh hưởng đến thứ hạng, nhưng là yếu tố hỗ trợ trải nghiệm người dùng và tính nhất quán dữ liệu có cấu trúc — hai yếu tố gián tiếp tác động đến CTR và thời gian ở lại.

Cách hoạt động

International breadcrumb markup hoạt động bằng cách kết hợp ba thành phần đồng bộ:

  1. Dữ liệu có cấu trúc JSON-LD: Dùng schema.org BreadcrumbList, với mỗi ListItem chứa thuộc tính item (URL đầy đủ theo locale) và name (tên hiển thị bằng ngôn ngữ tương ứng);
  2. URL thực tế: Mỗi đường dẫn trong item phải trỏ tới phiên bản đúng của trang — ví dụ: https://example.com/vi/san-pham/dien-thoai/, không phải https://example.com/en/phones/ khi đang ở trang tiếng Việt;
  3. Tín hiệu hreflang: Các URL trong breadcrumbs nên có thẻ <link rel="alternate" hreflang="..."> tương ứng trên trang — đảm bảo tính nhất quán giữa dữ liệu có cấu trúc và tín hiệu định tuyến quốc tế.

Lưu ý: Google không yêu cầu bắt buộc phải có international breadcrumb markup, nhưng nếu triển khai sai sẽ gây nhiễu dữ liệu — ví dụ: breadcrumbs tiếng Anh xuất hiện trên trang tiếng Nhật mà không có liên kết ngược phù hợp.

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

Thực hiện theo 5 bước sau:

  1. Xác định cấu trúc URL quốc tế: Ghi rõ loại triển khai bạn dùng — subdirectory (/vi/), subdomain (vi.example.com), hoặc miền quốc gia (example.vn). Điều này quyết định cách xây dựng URL trong item.
  2. Chuẩn bị tên danh mục theo locale: Không dịch máy móc. Tên name phải phù hợp văn hoá và từ khoá tìm kiếm thực tế tại thị trường đó — ví dụ: “Điện thoại” (VN) ≠ “Điện thoại di động” (Campuchia) ≠ “Smartphone” (đôi khi dùng ở Singapore).
  3. Viết JSON-LD chuẩn: Đặt đoạn mã vào phần <head> hoặc cuối <body>. Đảm bảo mỗi ListItemposition tăng dần, item là URL tuyệt đối và khớp với hreflang đã khai báo.
  4. Kiểm tra tính nhất quán: Dùng Google Search Console → Công cụ kiểm tra URL → tab “Dữ liệu có cấu trúc”. Kiểm tra cả phiên bản tiếng Việt và tiếng Anh để đảm bảo không có lỗi “Mising field”, “Invalid URL” hay “Language mismatch”.
  5. Tích hợp với hệ thống CMS: Nếu dùng WordPress, Shopify hoặc Magento, cần cấu hình plugin/theme hỗ trợ tự sinh breadcrumbs theo ngôn ngữ — ví dụ: WPML + Yoast SEO (cài đặt riêng cho mỗi ngôn ngữ), hoặc Shopify với app Langify hoặc Weglot.

Lỗi thường gặp

Dưới đây là 4 lỗi phổ biến và cách khắc phục:

Lỗi Dấu hiệu Cách khắc phục
URL trong item không khớp locale Breadcrumbs tiếng Việt chứa URL /en/ hoặc domain .com thay vì .vn Sửa URL trong item thành đúng phiên bản ngôn ngữ/khu vực — kiểm tra lại logic sinh URL trong template.
Tên danh mục không được dịch đúng ngữ cảnh Từ “Laptop” xuất hiện trên trang tiếng Việt dù người dùng Việt Nam thường tìm “máy tính xách tay” hoặc “laptop” Tham khảo dữ liệu từ Google Keyword Planner hoặc Ahrefs theo từng quốc gia; dùng bản dịch do người bản xứ duyệt.
Thiếu hreflang trên trang đích Google báo “Breadcrumb URL không có phiên bản ngôn ngữ tương ứng” trong Search Console Thêm thẻ <link rel="alternate" hreflang="vi-vn" href="https://example.com/vi/..."> cho tất cả phiên bản ngôn ngữ trên cùng trang.
Position không tuần tự hoặc bị lặp Google báo “Invalid position value” hoặc “Duplicate position” Đảm bảo position bắt đầu từ 1 và tăng liên tục (1, 2, 3…). Không dùng 0 hoặc số âm.

Ví dụ thực tế

Dưới đây là đoạn JSON-LD đúng cho trang sản phẩm điện thoại trên website đa ngôn ngữ (cấu trúc subdirectory):

{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "Trang chủ",
      "item": "https://example.com/vi/"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "Điện thoại",
      "item": "https://example.com/vi/san-pham/dien-thoai/"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "name": "iPhone 15 Pro",
      "item": "https://example.com/vi/san-pham/dien-thoai/iphone-15-pro/"
    }
  ]
}

Lưu ý: Trên cùng trang, thẻ <link rel="alternate" hreflang="en-us" href="https://example.com/en/phones/iphone-15-pro/"> cũng phải tồn tại. Với phiên bản tiếng Anh, name sẽ là “iPhone 15 Pro”, không phải “iPhone 15 Pro – Chính hãng”, và item phải là URL tiếng Anh.

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

Có bắt buộc phải dùng international breadcrumb markup không?

Không bắt buộc. Nhưng nếu website có hơn một phiên bản ngôn ngữ/khu vực và bạn muốn kiểm soát cách Google hiển thị breadcrumbs trong kết quả tìm kiếm theo từng thị trường, thì đây là thực hành tốt nhất — đặc biệt với thương hiệu toàn cầu hoặc sàn TMĐT đa quốc gia.

Có thể dùng microdata thay vì JSON-LD không?

Có thể, nhưng JSON-LD được Google khuyến nghị mạnh mẽ hơn vì dễ triển khai, ít xung đột với HTML và hỗ trợ tốt hơn trên các nền tảng động. Microdata vẫn hoạt động nếu viết đúng, nhưng khả năng bị lỗi do ký tự đặc biệt hoặc khoảng trắng thừa cao hơn — tùy trường hợp.

Nếu dùng CDN hoặc hệ thống cache, breadcrumb có bị sai khi chuyển ngôn ngữ không?

Có thể xảy ra nếu cache không phân biệt theo header Accept-Language hoặc cookie ngôn ngữ. Giải pháp: cấu hình CDN (Cloudflare, Cloud CDN) để cache riêng theo tham số URL (?lang=vi) hoặc header Cookie: lang=vi; hoặc dùng kỹ thuật “edge-side includes” để render breadcrumbs phía client khi cần thiết — có thể thay đổi theo hạ tầng.