Hướng dẫn tạo sitemap tối ưu Seo cho Laravel

Hướng dẫn tạo sitemap tối ưu Seo cho Laravel

Sitemap là gì

Sitemap XML là một tệp thông tin của website còn hiểu theo cách khác là một bản đồ của 1 website, được các công cụ tìm kiếm sử dụng để thu thập thông tin của một website (như bài viết mới, bài viết được cập nhật, hình ảnh, video) và lập chỉ mục, nếu tốt sẽ nhanh chóng xếp hạng cao trên các công cụ tìm kiếm.

Cách tạo Sitemap cho Laravel project

Trong bài viết này mình sẽ hướng dẫn các bạn cách tạo Sitemap tự động cho Laravel với package laravelium/sitemap.

1. Chú ý:

- Sử dụng trên VPS hoặc Hosting có thể tạo Cronjob

- Bài hướng dẫn được viết trên laravel 5.7, 5.8

2. Cài đặt package laravelium/sitemap

Để cài đặt package các bạn dùng lệnh sau (Laravel 5.8):

composer require laravelium/sitemap

* Lưu ý: Đối với Laravel 5.7 các bạn thêm dòng sau vào file composer.json

"laravelium/sitemap": "3.0.*"

Sau đó chạy lệnh

composer update

Để public file config của Package các bạn dùng lệnh sau:

php artisan vendor:publish --provider="Laravelium\Sitemap\SitemapServiceProvider"

3. Tạo Command

Để tạo Command các bạn dùng lệnh sau:

php artisan make:command CreateSiteMap --command=sitemap:create

Lệnh này sẽ tạo ra 1 file là CreateSiteMap.php trong thư mục app/console/commands

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;

class CreateSiteMap extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'sitemap:create';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Command description';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {
        //
    }
}

Use các thành phần cần thiết

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;
use App;
use DB;
use Carbon\Carbon;

Tiếp theo các bạn sửa lại hàm handle() như sau:

public function handle()
{
        //create new sitemap object
        $sitemap = App::make("sitemap");

        //add items to the sitemap (url, date, priority, freq)
        $sitemap->add(\URL::to('/'), Carbon::now(), '1.0', 'daily');

        //get all posts from db
        $posts = DB::table('posts')->orderBy('created_at', 'desc')->get();

        //add every post to the sitemap
        foreach ($posts as $post)
        {
            $sitemap->add(route('post.show', $post->slug), $post->updated_at, 1, 'daily');
        }

        //generate your sitemap (format, filename)
        $sitemap->store('xml', 'sitemap');
}

Để test các bạn chạy lệnh sau để tạo sitemap

php artisan sitemap:create

Sau đó truy cập yourdomain.com/sitemap.xml để kiểm tra

sitemap

4. Tạo Cronjob chạy tự động

a. Tao cronjob

Các bạn tạo một Cronjob như sau:

* * * * * php /path/artisan schedule:run >/dev/null 2>&1

Trong đó /path là đường dẫn tới thư mục chứa code của các bạn, ví dụ như sau:

* * * * * php /home/vietlaravel.com/public_html/artisan schedule:run >/dev/null 2>&1

b. Thêm schedule

Trong file \app\Console\Kernel.php các bạn thêm vào function schedule()

/**
* Define the application's command schedule.
*
* @param  \Illuminate\Console\Scheduling\Schedule  $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
    $schedule->command('sitemap:create')->dailyAt('00:00');
}

Sitemap sẽ được tạo tự động mỗi ngày vào lúc 00h hàng ngày, bạn có thể tùy ý chỉnh dailyAt thành thời gian bạn mong muốn.

Trên đây chỉ là cách tạo sitemap hết sức đơn giản. Để tìm hiểu thêm các bạn có thể truy cập trang chủ của Package tại đây: https://gitlab.com/Laravelium/Sitemap

Demo online: https://vietlaravel.com/sitemap.xml

Post Comment