KDIGI CMS
SEO

Sitemap là gì? Cách tạo và khai báo sitemap.xml

Đăng 11 phút đọc

Sitemap là tệp (thường là sitemap.xml) liệt kê các URL quan trọng của website để công cụ tìm kiếm khám phá nội dung dễ hơn. Nó không đảm bảo trang được lập chỉ mục hay lên hạng. Bài này hướng dẫn cấu trúc, cách tạo, cách khai báo và lỗi thường gặp.

Tóm tắt nhanh

  • Sitemap là "bản đồ" URL gửi cho bot; định dạng phổ biến nhất là XML (sitemap.xml).
  • Mỗi file tối đa 50.000 URL hoặc 50 MB (chưa nén); quá giới hạn thì chia nhỏ và dùng sitemap index.
  • Chỉ đưa vào sitemap các URL trả mã 200, cho phép lập chỉ mục và là bản canonical.
  • Khai báo bằng Google Search Console và dòng Sitemap: trong robots.txt.
  • Google bỏ qua priority và changefreq; lastmod chỉ hữu ích khi luôn chính xác.
  • IndexNow là giao thức báo URL mới/đổi cho một số công cụ tìm kiếm (như Bing), bổ sung chứ không thay sitemap.

Sitemap là gì?

Sitemap là danh sách URL mà bạn muốn công cụ tìm kiếm thu thập, kèm một số thông tin phụ như ngày cập nhật. Công cụ tìm kiếm vẫn khám phá trang qua liên kết; sitemap là kênh bổ sung, đặc biệt hữu ích khi:

  • Website mới, ít liên kết từ bên ngoài.
  • Website lớn, có nhiều trang nằm sâu hoặc ít liên kết nội bộ.
  • Nội dung thay đổi thường xuyên (tin tức, sản phẩm, bài blog).
  • Website có nhiều tệp đa phương tiện (ảnh, video) cần được hiểu.

Theo tài liệu của Google, nếu site nhỏ (khoảng vài trăm trang trở xuống) và các trang đã liên kết với nhau đầy đủ, bạn có thể không cần sitemap. Dù vậy, tạo sitemap gần như không tốn chi phí và giúp theo dõi tình trạng lập chỉ mục trong Search Console, nên hầu hết website vẫn nên có.

Sitemap XML và sitemap HTML

Loại Dành cho Định dạng Ví dụ
Sitemap XML Công cụ tìm kiếm XML, đọc bằng máy https://example.com/sitemap.xml
Sitemap HTML Người dùng Trang web thường Trang "Sơ đồ site" ở chân trang

Khi nói "sitemap" trong SEO, người ta thường nhắc đến sitemap XML. Ngoài ra còn có sitemap ảnh, video và tin tức (news) là phần mở rộng của cùng định dạng.

Cấu trúc sitemap.xml

Một file sitemap tối giản trông như sau:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://example.com/</loc>
    <lastmod>2026-11-01</lastmod>
  </url>
  <url>
    <loc>https://example.com/blog/sitemap-la-gi</loc>
    <lastmod>2026-10-28</lastmod>
  </url>
</urlset>

Các thẻ

Thẻ Bắt buộc Ý nghĩa Google dùng?
<urlset> Có Thẻ bao ngoài, khai báo namespace Có
<url> Có Bao một mục URL Có
<loc> Có URL đầy đủ, tuyệt đối (gồm https://) Có
<lastmod> Không Ngày chỉnh sửa nội dung lần cuối (định dạng W3C/ISO 8601) Có, nếu luôn chính xác
<changefreq> Không Tần suất thay đổi dự kiến Bỏ qua
<priority> Không Độ ưu tiên tương đối 0.0-1.0 Bỏ qua

Quy tắc cần nhớ:

  • loc phải là URL tuyệt đối, cùng giao thức và host với trang chứa nó (không trộn http với https, không trộn www với non-www).
  • Tệp mã hóa UTF-8; các ký tự đặc biệt trong URL như & phải được escape (&amp;).
  • Đặt sitemap ở thư mục gốc nếu muốn nó bao phủ toàn site, vì sitemap chỉ được liệt kê URL trong phạm vi đường dẫn của nó.
  • lastmod chỉ nên đổi khi nội dung thực sự thay đổi. Cập nhật ngày giờ cho mọi trang mỗi lần build sẽ làm tín hiệu này mất giá trị.

Sitemap index khi site lớn

Mỗi file sitemap giới hạn 50.000 URL và 50 MB chưa nén. Với site lớn, tách thành nhiều file rồi gom bằng một file sitemap index:

<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <sitemap>
    <loc>https://example.com/sitemap-posts.xml</loc>
    <lastmod>2026-11-01</lastmod>
  </sitemap>
  <sitemap>
    <loc>https://example.com/sitemap-pages.xml</loc>
    <lastmod>2026-10-20</lastmod>
  </sitemap>
</sitemapindex>

Tách theo loại nội dung (bài viết, trang, sản phẩm) còn giúp bạn nhìn thấy trong Search Console nhóm nào đang gặp vấn đề lập chỉ mục.

Cách tạo sitemap.xml

Tùy nền tảng, bạn có bốn hướng chính:

  1. CMS hoặc plugin tự tạo: WordPress từ phiên bản 5.5 có sitemap tích hợp ở /wp-sitemap.xml; các plugin SEO như Yoast hay Rank Math cũng tạo sitemap. Bạn chỉ cần bật và kiểm tra.
  2. Framework tạo khi build: với Next.js (App Router) có thể khai báo tệp app/sitemap.ts, trả về danh sách URL.
  3. Công cụ ngoài: các trình thu thập (crawler) quét site và xuất sitemap, phù hợp site nhỏ, tĩnh.
  4. Tự viết từ dữ liệu: với website headless, lấy danh sách nội dung đã xuất bản từ API rồi sinh XML.

Ví dụ hướng thứ tư với Next.js, lấy bài viết từ một API và trả về sitemap:

// app/sitemap.ts
import type { MetadataRoute } from 'next'

export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
  const res = await fetch(
    'https://cms.example.com/api/posts?where[status][equals]=published&limit=1000&depth=0',
  )
  const { docs } = await res.json()

  return docs.map((post: { slug: string; updatedAt: string }) => ({
    url: `https://example.com/blog/${post.slug}`,
    lastModified: post.updatedAt,
  }))
}

Đây là ví dụ minh họa; bạn cần điều chỉnh endpoint, xác thực và phân trang theo hệ thống của mình.

Sitemap với KDIGI CMS

KDIGI CMS là headless CMS, nên sitemap thuộc về frontend của từng website: CMS cung cấp dữ liệu qua headless API, frontend dựng sitemap.xml như ví dụ trên. Mỗi nội dung trong CMS có trường sitemapPriority để frontend dùng khi dựng sitemap; lưu ý Google không đọc giá trị này, nên đừng kỳ vọng nó tác động đến xếp hạng. Phần SEO theo từng nội dung (tiêu đề, mô tả, canonical, JSON-LD) xem tại SEO và JSON-LD. Nếu tự vận hành hạ tầng, xem thêm cách tự host KDIGI CMS.

Những URL nên và không nên đưa vào sitemap

Sitemap nên là danh sách sạch: chỉ những URL bạn thật sự muốn xuất hiện trên Google.

Nên đưa vào Không nên đưa vào
URL trả mã 200 URL trả 404, 410 hoặc 5xx
Trang canonical Bản trùng lặp, trang có canonical trỏ nơi khác
Trang cho phép lập chỉ mục Trang có noindex
Trang Googlebot được phép thu thập Trang bị chặn bởi robots.txt
URL cuối cùng sau chuyển hướng URL đang redirect (301/302)
Trang có nội dung riêng, hữu ích Trang tìm kiếm nội bộ, trang lọc vô hạn, trang cảm ơn

Mâu thuẫn giữa sitemap và các tín hiệu khác (ví dụ liệt kê URL noindex) khiến bạn khó đọc báo cáo và có thể lãng phí ngân sách thu thập.

Cách khai báo sitemap cho Google

Có hai cách chính, nên làm cả hai.

Cách 1: Gửi trong Google Search Console

  1. Đăng nhập Google Search Console và chọn website (nên xác minh theo thuộc tính Domain).
  2. Vào mục Sơ đồ trang web (Sitemaps).
  3. Nhập đường dẫn tương đối, ví dụ sitemap.xml, rồi bấm Gửi.
  4. Kiểm tra trạng thái: Thành công nghĩa là Google đã đọc được tệp; Không thể tìm nạp hoặc Có lỗi cần mở chi tiết để xem nguyên nhân.

Sau khi gửi một lần, Google sẽ tự đọc lại sitemap định kỳ; bạn không cần gửi lại mỗi lần đăng bài. Báo cáo này cũng cho biết số URL đã phát hiện.

Cách 2: Khai báo trong robots.txt

Thêm một dòng vào robots.txt ở thư mục gốc để mọi công cụ tìm kiếm đều thấy sitemap:

User-agent: *
Allow: /

Sitemap: https://example.com/sitemap.xml

Dòng Sitemap: dùng URL tuyệt đối và có thể khai báo nhiều sitemap. Kiểm tra lại rằng robots.txt không chặn chính các URL bạn liệt kê trong sitemap.

Còn "ping" sitemap thì sao?

Trước đây có thể gọi một URL ping để báo Google về sitemap mới. Google đã ngừng hỗ trợ cách này, nên hãy dùng Search Console và robots.txt thay vì các hướng dẫn cũ còn lưu hành.

Lỗi sitemap thường gặp và cách xử lý

Lỗi/Hiện tượng Nguyên nhân thường gặp Cách xử lý
Không thể tìm nạp sitemap Sai đường dẫn, bị chặn, máy chủ lỗi Mở URL trên trình duyệt, kiểm tra mã 200 và robots.txt
Có lỗi cú pháp XML Thiếu thẻ đóng, ký tự & chưa escape Kiểm tra bằng trình xác thực XML
URL trả 404 hoặc redirect Sitemap cũ không được cập nhật khi đổi URL Sinh lại sitemap từ dữ liệu thật; dùng URL cuối (Redirect 301)
URL bị noindex hoặc bị chặn Cấu hình mâu thuẫn Bỏ URL khỏi sitemap hoặc bỏ noindex nếu muốn lập chỉ mục
Sai host hoặc giao thức Liệt kê http hay www trong khi site dùng https Dùng đúng phiên bản chuẩn của domain
Vượt giới hạn 50.000 URL/50 MB Site lớn dồn một file Tách file và dùng sitemap index
lastmod luôn là ngày hôm nay Sinh tự động theo thời điểm build Dùng ngày sửa nội dung thật

"Đã gửi" không đồng nghĩa với "đã lập chỉ mục". Nếu URL trong sitemap không được lập chỉ mục, hãy xem báo cáo Lập chỉ mục trang và dùng Kiểm tra URL để biết Google gặp vấn đề gì: nội dung mỏng, trùng lặp, bị chặn hay chưa được thu thập.

IndexNow: báo URL mới tức thì

IndexNow là giao thức mở cho phép website chủ động thông báo URL mới, đã đổi hoặc đã xóa cho công cụ tìm kiếm tham gia. Theo trang chính thức indexnow.org, các công cụ như Bing, Yandex, Naver, Seznam.cz và Yep hỗ trợ giao thức này. Google không nằm trong danh sách tham gia tại thời điểm viết bài, vì vậy với Google bạn vẫn dựa vào sitemap và Search Console.

Cách dùng cơ bản:

  1. Tạo một khóa (chuỗi ký tự) và đặt tệp văn bản chứa khóa tại gốc website, ví dụ https://example.com/abc123.txt.
  2. Khi có URL mới hoặc thay đổi, gửi yêu cầu:
curl "https://api.indexnow.org/indexnow?url=https://example.com/blog/sitemap-la-gi&key=abc123"
  1. Hoặc gửi hàng loạt bằng POST JSON (có giới hạn số URL mỗi lần theo tài liệu):
curl -X POST https://api.indexnow.org/indexnow \
  -H "Content-Type: application/json; charset=utf-8" \
  -d '{
    "host": "example.com",
    "key": "abc123",
    "keyLocation": "https://example.com/abc123.txt",
    "urlList": [
      "https://example.com/blog/sitemap-la-gi",
      "https://example.com/blog/huong-dan-lam-seo-website"
    ]
  }'

IndexNow chỉ thông báo, không đảm bảo lập chỉ mục. Nó phù hợp bổ sung cho sitemap, nhất là website tin tức hoặc thương mại điện tử có URL đổi liên tục.

Quy trình đề xuất

  1. Sinh sitemap tự động từ danh sách nội dung đã xuất bản và đúng canonical.
  2. Khai báo trong robots.txt và gửi lên Search Console.
  3. Xem lại báo cáo Sitemaps và Lập chỉ mục sau vài ngày.
  4. Sửa các URL lỗi ở nguồn dữ liệu rồi để sitemap tự cập nhật.
  5. Nếu cần phản hồi nhanh ở công cụ hỗ trợ, thêm IndexNow khi xuất bản.

Sitemap chỉ là một mắt xích. Hãy đặt nó trong bức tranh đầy đủ ở hướng dẫn làm SEO website từ A-Z, và tối ưu từng trang với thực hành tốt SEO on-page. Nếu bạn muốn trang dễ được các công cụ AI hiểu, xem thêm llms.txt là gì.

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

Sitemap là gì?

Sitemap là tệp liệt kê các URL quan trọng của website, thường ở định dạng XML (sitemap.xml), giúp công cụ tìm kiếm khám phá và thu thập nội dung hiệu quả hơn. Nó là gợi ý cho bot, không phải cam kết sẽ lập chỉ mục.

Sitemap.xml để làm gì?

Sitemap.xml giúp Google biết những URL nào tồn tại và khi nào chúng thay đổi, đặc biệt với site mới, site lớn hoặc ít liên kết nội bộ. Nó cũng giúp bạn theo dõi tình trạng lập chỉ mục theo từng nhóm URL trong Search Console.

Website nhỏ có cần sitemap không?

Nếu site chỉ có vài trang và các trang đã liên kết với nhau đầy đủ, Google có thể tự tìm thấy mà không cần sitemap. Tuy vậy, có sitemap rất ít tốn công và vẫn hữu ích cho việc theo dõi, nên nên có.

Sitemap nằm ở đâu và làm sao kiểm tra?

Thông thường ở https://tenmien.com/sitemap.xml. Bạn có thể mở trực tiếp trên trình duyệt, xem dòng Sitemap: trong robots.txt, hoặc xem báo cáo Sitemaps trong Search Console.

Một sitemap chứa tối đa bao nhiêu URL?

Tối đa 50.000 URL và 50 MB chưa nén cho mỗi tệp. Vượt giới hạn thì chia thành nhiều tệp và khai báo qua một sitemap index.

Có cần gửi lại sitemap mỗi khi đăng bài mới?

Không. Sau khi gửi sitemap lên Search Console, Google sẽ đọc lại định kỳ. Chỉ cần đảm bảo sitemap tự cập nhật theo nội dung đã xuất bản.

Nguồn

Bài viết liên quan

Chính sách biên tập: bài viết do đội ngũ KDIGI biên soạn, thông tin sản phẩm đối chiếu với mã nguồn và tài liệu chính thức, thông tin về sản phẩm khác kèm nguồn dẫn. Xem thêm giới thiệu KDIGI.