Sitemap.xml cho website
Hướng dẫn tạo sitemap.xml đúng chuẩn, chọn URL cần khai báo và triển khai hiệu quả cho website, đặc biệt là website khách sạn.
Sitemap.xml cho website
sitemap.xml là một XML document liệt kê các URL mà chủ website muốn crawler biết đến. Sitemap không ép search engine crawl hoặc index mọi URL, nhưng giúp crawler phát hiện các trang quan trọng, đặc biệt khi website lớn, có nội dung mới hoặc cấu trúc liên kết chưa hoàn hảo.
Sitemap và robots.txt có vai trò khác nhau:
sitemap.xmltrả lời: “Những URL quan trọng nào tồn tại trên website?”robots.txttrả lời: “Crawler không nên truy cập những khu vực nào?”
Một website có thể dùng cả hai file. Sitemap nên liệt kê các URL muốn xuất hiện trên search engine, còn robots.txt nên loại bỏ các URL thao tác, nội bộ hoặc tạo ra dữ liệu trùng lặp.
Cấu trúc tối thiểu
Một sitemap URL set hợp lệ cần khai báo namespace, phần tử gốc urlset, và một hoặc nhiều phần tử url. Mỗi url bắt buộc có loc:
Các URL trong sitemap nên là absolute URL, dùng đúng protocol, host và format canonical mà website phục vụ. Không trộn http với https, hoặc www với non-www, nếu website chỉ chọn một phiên bản canonical.
Chọn URL nào để đưa vào sitemap?
Chỉ đưa vào sitemap những URL mà website thực sự muốn search engine crawl và index:
- trả về HTTP
200; - là canonical URL;
- không yêu cầu đăng nhập;
- có nội dung hữu ích, ổn định;
- không bị chặn bởi
robots.txt; - không chứa session ID hoặc tham số tracking không cần thiết.
Không nên đưa các URL sau vào sitemap:
- redirect
3xx; - trang lỗi
4xxhoặc5xx; - URL bị
noindex; - URL trùng lặp hoặc là bản in, bản filter không canonical;
- trang checkout, confirmation, account hoặc admin;
- URL tìm kiếm nội bộ với query string.
Sitemap là danh sách URL muốn ưu tiên khám phá, không phải bản sao toàn bộ URL mà server có thể tạo ra.
Các phần tử thường dùng
loc
loc là phần tử bắt buộc, chứa URL của trang. URL phải được escape đúng XML nếu có ký tự đặc biệt. Tuy nhiên, thiết kế tốt nhất là tránh đưa query string không cần thiết vào sitemap.
lastmod
lastmod cho biết thời điểm nội dung của URL thay đổi đáng kể, không phải thời điểm sitemap được generate. Dùng ISO 8601 và chỉ cập nhật khi nội dung thực sự thay đổi:
Không nên đặt ngày hiện tại cho mọi URL sau mỗi lần deploy. Dữ liệu lastmod không chính xác làm giảm độ tin cậy của sitemap và có thể khiến crawler bỏ qua tín hiệu này.
changefreq và priority
Protocol sitemap có định nghĩa changefreq và priority, nhưng các search engine hiện đại có thể bỏ qua chúng. Không nên dùng chúng như cơ chế đảm bảo crawl hoặc xếp hạng:
Trong đa số trường hợp, loc chính xác và lastmod trung thực có giá trị hơn việc cố gắng gán priority cho mọi trang.
Giới hạn kích thước và sitemap index
Một sitemap đơn lẻ không được vượt quá 50.000 URL hoặc 50 MB khi chưa nén. Website lớn cần chia thành nhiều sitemap và tạo một sitemap index:
Mỗi sitemap con vẫn phải tuân thủ giới hạn riêng. Có thể phân chia theo loại nội dung (rooms.xml, offers.xml) hoặc theo thời gian (posts-2026-09.xml) để dễ generate và kiểm tra.
Sitemap có thể được gzip khi truyền qua HTTP, ví dụ sitemap.xml.gz. Giới hạn vẫn cần được tính theo quy tắc của crawler và tool kiểm tra mà bạn sử dụng; đừng để một file nén quá lớn che giấu sitemap XML gốc vượt giới hạn.
Khai báo sitemap cho crawler
Qua robots.txt
Thêm URL tuyệt đối của sitemap index hoặc sitemap chính vào robots.txt:
Dòng Sitemap không bị giới hạn bởi group User-agent; nó là một record độc lập trong robots.txt. Không đặt sitemap trong thư mục bị Disallow.
Qua công cụ quản trị search engine
Có thể submit sitemap trong công cụ quản trị của search engine để xem số URL đã được phát hiện, lỗi parse và trạng thái xử lý. Đây là cách hữu ích để kiểm tra sitemap sau khi deploy, nhưng submit sitemap không đảm bảo mọi URL sẽ được index.
Mẫu sitemap cho website khách sạn
Giả sử hotel site có các trang phòng, địa điểm và ưu đãi. Sitemap nên tập trung vào các trang landing page có giá trị tìm kiếm:
Không đưa những URL sau vào sitemap:
Các URL này có thể chứa dữ liệu theo session, thông tin cá nhân hoặc nội dung không phù hợp để index. Chặn chúng trong robots.txt cũng không thay thế authentication và authorization ở server.
Sitemap động trong ứng dụng
Nếu nội dung đến từ CMS hoặc database, không nên duy trì sitemap thủ công bằng cách copy URL. Hãy generate sitemap từ cùng nguồn dữ liệu tạo ra canonical page:
- Lọc bản ghi đã publish và có canonical URL.
- Loại bỏ bản ghi bị
noindex, redirect hoặc không còn tồn tại. - Lấy
lastmodtừ thời điểm nội dung thay đổi, không lấy thời điểm build. - Chia output theo giới hạn số URL và kích thước.
- Validate XML trước khi publish.
- Đảm bảo CDN và cache trả về phiên bản mới sau khi nội dung thay đổi.
Với website đa ngôn ngữ, mỗi URL ngôn ngữ có thể xuất hiện trong sitemap. Nếu dùng hreflang, cần bảo đảm các alternate URL trỏ đến URL tồn tại và canonical strategy nhất quán.
Lỗi thường gặp
Đưa URL bị chặn vào sitemap
Nếu URL vừa xuất hiện trong sitemap vừa bị Disallow, crawler nhận hai tín hiệu mâu thuẫn. Sitemap không override robots.txt. Hãy quyết định URL có cần crawl hay không rồi giữ nó ở đúng một nhóm.
Đưa mọi URL vào sitemap
Thêm hàng triệu URL filter, query hoặc session không giúp website index tốt hơn. Nó làm giảm chất lượng tín hiệu và tăng chi phí crawl. Sitemap nên là tập URL được tuyển chọn.
Dùng URL redirect hoặc non-canonical
Sitemap nên trỏ trực tiếp đến URL cuối cùng, không trỏ qua redirect. Nếu /rooms/deluxe-old redirect sang /rooms/deluxe, chỉ URL mới nên xuất hiện trong sitemap.
Cập nhật lastmod sai
Ngày generate file không đồng nghĩa với ngày nội dung thay đổi. Mỗi trang cần lấy metadata từ chính hệ thống quản lý nội dung.
Nghĩ rằng sitemap đảm bảo index
Sitemap chỉ là discovery signal. Search engine còn đánh giá chất lượng nội dung, canonical, khả năng truy cập, duplicate content và nhiều tín hiệu khác trước khi index.
Checklist triển khai
- Chọn canonical URL cho từng trang trước khi generate sitemap.
- Chỉ đưa URL trả về
200và có nội dung muốn index. - Kiểm tra sitemap không chứa URL bị
Disallowhoặcnoindex. - Kiểm tra XML well-formed, UTF-8 và content type phù hợp.
- Chia sitemap khi vượt 50.000 URL hoặc 50 MB chưa nén.
- Đặt
lastmodtheo thời điểm nội dung thay đổi thực tế. - Khai báo sitemap trong
robots.txtvà submit qua công cụ quản trị search engine. - Sau deploy, kiểm tra access log, status HTTP, redirect, cache và báo cáo lỗi sitemap.
- Với hotel site, ưu tiên các trang phòng, địa điểm, tiện ích và ưu đãi; loại bỏ search, booking state, account và confirmation page.
Kết luận
robots.txt giúp điều hướng phạm vi crawl, còn sitemap.xml giúp crawler phát hiện những URL quan trọng. Website nên dùng sitemap như một danh sách canonical, có chọn lọc và được cập nhật từ dữ liệu nội dung đáng tin cậy. Khi kết hợp sitemap với robots.txt, canonical và authentication đúng cách, crawler sẽ nhận được tín hiệu rõ ràng hơn về cấu trúc website.