
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
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
Các bạn copy bài viết sang website khác, vui lòng ghi nguồn VietLaravel.com. Xin cảm ơn.
Post Comment