Home Kiến thức Website Hướng dẫn tạo sitemap với laravel

Hướng dẫn tạo sitemap với laravel

by Trần Đạt
A+A-
Reset

Tạo một sitemap là một phần quan trọng trong việc tối ưu hóa công việc SEO cho trang web của bạn. Đặc biệt với Laravel, một framework phổ biến trong phát triển web, việc tạo sitemap có thể được thực hiện một cách dễ dàng và hiệu quả. Trong phần này, chúng ta sẽ khám phá cách tạo một sitemap trong Laravel để giúp trang web của bạn dễ dàng được index hơn trên các công cụ tìm kiếm như Google.

I. Cài đặt package.

Đầu tiên, chúng ta cần cài đặt một gói được gọi là spatie/laravel-sitemap. Bạn có thể cài đặt nó bằng Composer bằng cách chạy lệnh sau:

AZDIGI Tutorial
composer require spatie/laravel-sitemap
    
Hướng dẫn tạo sitemap với laravel

Sau khi quá trình cài đặt spatie/laravel-sitemap hoàn tất, bạn thêm cấu hình bên dưới vào file config/app.php và đoạn cấu hình này bạn thêm ở phần providers

Spatie\Sitemap\SitemapServiceProvider::class,

Hướng dẫn tạo sitemap với laravel

Tiếp đến là bạn publish cấu hình, ta sử dụng artisan với lệnh như bên dưới:

AZDIGI Tutorial
php artisan vendor:publish --provider="Spatie\Sitemap\SitemapServiceProvider" --tag=sitemap-config
    
Hướng dẫn tạo sitemap với laravel

Với lệnh artisan này sẽ sao chép cấu hình mặc định sang config/sitemap.php nơi bạn có thể chỉnh sửa.

II. Tạo controller.

Trước tiên, bạn cần tạo hoặc sử dụng một controller đã tồn tại trong ứng dụng Laravel của bạn. Nếu bạn chưa có controller nào, bạn có thể tạo một controller mới bằng cách sử dụng lệnh Artisan như sau:

AZDIGI Tutorial
php artisan make:controller SitemapController
    

Trong đó:

SitemapController: Là tên file controller sẽ tạo.
Hướng dẫn tạo sitemap với laravel

Lệnh này sẽ tạo một file controller mới có tên là SitemapController.php trong thư mục app/Http/Controllers.

Tiếp đến bạn cần phải chạy lệnh sau để cập nhật tất cả các tệp autoload của Composer.

AZDIGI Tutorial
composer dump-autoload
    

Sau khi đã cập nhật, bạn mở file SitemapController.php và thêm cấu hình như sau:

<?php
namespace App\Http\Controllers;

use Spatie\Sitemap\SitemapGenerator;

class SitemapController extends Controller
{
    public function generateSitemap()
    {
        SitemapGenerator::create('https://example.com')->writeToFile(public_path('sitemap.xml'));
    }
}

Trong đó:

example.com: Bạn thay thành tên miền của bạn.
writeToFile(public_path(‘sitemap.xml’)): Phương thức trên đối tượng SitemapGenerator để viết sitemap vào một file cụ thể. Trong ví dụ này, sitemap sẽ được viết vào tệp sitemap.xml trong thư mục public của ứng dụng Laravel.

Tiếp đến bạn thêm một cấu hình route như bên dưới vào file routes/web.php, để có thể gọi phương thức này từ một route.

Route::get('/sitemap.xml', [
    SitemapController::class, 
    'generateSitemap'
]);

Như vậy phương thức generateSitemap() trong controller sẽ được gọi và việc tạo sitemap đã hoàn tất, bây giờ bạn truy cập tên_miền/sitemap trên trình duyệt để tạo file sitemap.xml.

Lưu ý: Khi bạn truy cập tên_miền/sitemap.xml lần đầu tiên thì sẽ không hiển thị nội dung gì mà chỉ trắng trang. Bạn đừng lo, vì khi truy cập lần đầu là để tạo file sitemap.xml. Bạn F5 lại trang thì sẽ hiển thị nội dung sitemap của bạn.

Hướng dẫn tạo sitemap với laravel

III. Cập nhật sitemap thường xuyên.

Trang web của bạn có thể sẽ được cập nhật theo thời gian. Để sitemap của bạn phản ánh những thay đổi này, bạn có thể chạy trình tạo định kỳ. Hoặc cách dễ nhất để làm điều này là sử dụng khả năng lập lịch mặc định của Laravel.

1. Tạo một lệnh mới bằng lệnh Artisan.

Để tạo một lệnh(command) mới bạn chạy lệnh sau:

AZDIGI Tutorial
php artisan make:command GenerateSitemap
    

Điều này sẽ tạo một lệnh mới có tên là GenerateSitemap trong thư mục app/Console/Commands.

2. Cấu hình file lệnh command.

Tiếp đến bạn mở file app/Console/Commands/GenerateSitemap.php và thay đổi cấu hình như sau:

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;
use Spatie\Sitemap\SitemapGenerator;

class GenerateSitemap extends Command
{
    /**
     * The console command name.
     *
     * @var string
     */
    protected $signature = 'sitemap:generate';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Generate the sitemap.';

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {
        // modify this to your own needs
        SitemapGenerator::create('https://example.com')->writeToFile(public_path('sitemap.xml'));
    }
}

Trong lớp GenerateSitemap, bạn sẽ thấy hai phương thức signaturehandle. Phương thức signature xác định tên của lệnh và các tùy chọn dòng lệnh mà lệnh này hỗ trợ. Còn phương thức handle là nơi bạn đặt logic xử lý cho lệnh và bạn thay example.com thành tên miền của bạn.

Sau đó trong tệp App\Console\Kernel.php, bạn thêm đoạn mã sau vào phương thức schedule():

$schedule->command('sitemap:generate')->daily();
Hướng dẫn tạo sitemap với laravel

Như vậy là bạn đã hoàn tất việc thiết lập khả năng lập lịch mặc định của Laravel.

Để kiểm tra bạn sử dụng lệnh artisan sau:

AZDIGI Tutorial
php artisan schedule:list
    
Hướng dẫn tạo sitemap với laravel

Hy vọng rằng hướng dẫn này đã giúp bạn hiểu rõ hơn về quá trình tạo sitemap trong Laravel và cách nó có thể hỗ trợ trong việc tối ưu hóa trang web của bạn cho SEO. Hãy áp dụng và theo dõi sự cải thiện trong hiệu suất tìm kiếm của trang web của bạn!

Chúc bạn thực hiện thành công.

Nếu các bạn cần hỗ trợ các bạn có thể liên hệ bộ phận hỗ trợ theo các cách bên dưới:

5/5 - (1 vote)

Tham gia nhóm hỗ trợ Server - Hosting

Tham gia nhóm Hỗ trợ Server - Hosting & WordPress để cùng nhau hỏi đáp và hỗ trợ các vấn đề về WordPress, tối ưu máy chủ/server.

Tham gia ngay

Bài viết cùng chuyên mục

AZDIGI – Không chỉ là đơn vị hàng đầu trong lĩnh vực Web Hosting và Máy chủ, chúng tôi mong muốn mang lại những kiến thức bổ ích nhất và luôn cập nhật thường xuyên cho cộng đồng người đam mê thiết kế website, công nghệ,…

Vui lòng không sao chép nội dung nếu chưa xin phép. Designed and Developed by PenciDesign