Sitemap có vai trò quan trọng trong việc tìm kiếm và nạp dữ liệu web của chúng ta cho các bộ máy tìm kiếm (Search Engines) như Google, Bing, Yahoo,.. Và trong bài viết này, mình sẽ hướng dẫn các bạn cách tạo ra Sitemap XML đơn giản nhất trong Laravel Framework.

Sitemap là gì ?

Theo như Google thì:

A sitemap is a file where you can list the web pages of your site to tell Google and other search engines about the organization of your site content. Search engine web crawlers like Googlebot read this file to more intelligently crawl your site.

Theo trên, thì Sitmap là một tập tin mà trong đó chứa danh sách các trang có trong website để cho Google và các bộ máy tìm kiếm biết được nội dung của website đó. Từ đó các crawlers (nôm na là robots thu thập dữ liệu) như Googlebot sẽ đọc file đó để nạp dữ liệu của website một cách thông minh. Và có nhiều lý do khác để một website thực sự cần một sitemap, chẳng hạn: Trang web của bạn có kho dữ liệu khổng lồ, và các con robot sẽ không kiểm soát hết được chắc chắn sẽ có thiếu xót, và bạn không muốn điều đó xảy ra, hay đơn giản là các trang web ấy đang bị cô lập và không có các đường dẫn liên kết khiến cho các bộ máy tìm kiếm không xem được nội dung của các trang ấy,…

Mẫu Sitemap XML

Chúng ta dễ dàng tìm được mẫu Sitemap XML chính thức tại trang Sitemap.org, một sitemap xml đơn giản sẽ có nội dung như sau:

Một một trang sẽ được định nghĩa trong thẻ <url> và bạn nên nhớ rằng mỗi một tập tin sitemap xml như thế này chỉ được chứa 50,000 trang thôi. Vậy nếu website chúng ta có nhiều hơn 50 ngàn trang bạn nên chia nó ra thành các trang sitemap nhỏ và thế trong trang sitemap chính sẽ có nội dung như sau:

 

Lúc này, các sitemap sẽ được đặt trong mỗi thẻ <sitemap> và đường dẫn các tập tin đó cũng nằm trong thẻ <loc>. Và trong bài này mình sẽ làm theo cách thứ 2 đễ chia ra cho dễ.

Tạo sitemap controller

Để bắt đầu mình giả sử có 3 bảng là Pages, Posts và Categories, mỗi bản đều có 3 cột quan trọng là title, slug (đường dẫn) và updated_at. Và mình đặt tên Route của chúng như sau:

  • Page: http://example.com/{slug} tên route là page.view
  • Post: http://example.com/article/{slug} tên route là post.view
  • Category: http://example.com/category/{slug} tên route là category.view

Chúng ta sẽ tạo Controller bằng cách quen thuộc như sau trên màn hình lệnh:

Như vậy ta đã hoàn thành bước chuẩn bị rồi đấy.

Tạo trang Sitemap chính

Bây giờ ta tạo ra một action đầu tiên cho trang Sitemap chính, mở tập tin SitemapController.php ra và chúng ta lấy dữ liệu cuối cùng và mới nhất từ 3 bảng Pages, Posts và Categories (riêng cái này theo lấy theo Posts):

Ở trên mình trả về một view trong đó có khai báo header là tập tin XML để trình duyệt hiểu đúng định dạng của sitemap, Bây giờ chúng ta tiếp tục tạo phần view, /resources/views/sitemap/index.blade.php:

Thuộc tính updated_at là một đối tượng Carbon, ta chuyển nó về giờ quốc tế GMT và chuyển nó sang dạng thời gian cho Sitemap atom. Cuối cùng ta xây dựng Route cho em nó:

Xây dựng các trang sitemap con

Ta tiếp tục tạo ra 3 action trong SitemapController để tạo sitemap cho 3 trang post, category và page:

Ta tạo phần view cho các action trên, mình tạo mẫu một cái Posts còn 2 phần CategoriesPages bạn tự tạo nhé:

Cuối cùng ta tạo Routes cho chúng:

Như vậy ta đã hoàn thành rồi, các bạn có thể kiểm tra truy cập: http://domain.com/sitemap.xml

Lời kết

Như vậy mình đã hướng dẫn các bạn tạo Sitemap cho ứng dụng Laravel, các bạn có thể tìm thấy nhiều Packages hỗ trợ việc này, nhưng tự mình làm vẫn vui hơn phải không 🙂 Ngoài sitemap truyền thống bạn cũng có thể tạo ra Sitemap hình ảnh hoặc Sitemap video tùy vào mục đích. Nếu bạn muốn làm cho Sitemap của bạn thêm bắt mắt sinh động có thể thêm các mẫu giao diện XSL cho XML trên internet hoặc tham khảo từ ông Yoast tại địa chỉ này. Chúc các bạn thành công.

LEAVE A REPLY

Please enter your comment!
Please enter your name here