Laravel Sitemap Untuk SEO

Dalam artikel ini, kita akan belajar bagaimana mengimplementasikan Laravel Sitemap untuk menggenerasi sitemap pada project kita.

2 min read

Published on 23 Jun, 2022 (updated: 25 Oct, 2022)

Written by Irsyad A. Panjaitan

Fill in LaravelLaravel

ArticlesLaravel Sitemap Untuk SEO

Dalam artikel ini, kita akan belajar bagaimana mengimplementasikan Laravel Sitemap untuk menggenerasi sitemap pada project kita.

Tetapi, bukan berarti tanpa package ini tidak bisa dibuat manual ya, hanya saja package ini mempermudah kita saja.

Yang pertama kali kita akan install terlebih dahulu package nya.

terminal
composer require spatie/laravel-sitemap
bashCopy

Publish konfigurasi

terminal
php artisan vendor:publish --provider="Spatie\Sitemap\SitemapServiceProvider" --tag=sitemap-config
bashCopy

Kemudian harusnya dia akan membuatkan file tepat pada config/sitemap.php. Nah setelah itu, untuk menggunakan api nya cukup simpel, hanya perlu menjalankan code ini:

use Spatie\Sitemap\SitemapGenerator; SitemapGenerator::create('https://parsinta.com/')->writeToFile(public_path('sitemap.xml'));
phpCopy

Tetapi, jika Anda ingin lebih rapi, maka Anda bisa buat satu Command yang kerja nya untuk menjalankan kode itu. Untuk itu, mari kita buat langsung.

terminal
php artisan make:command GenerateSitemap
bashCopy

Setelah itu, silahkan buka filenya, pada app/Console/Commands/GenerateSitemap.php

app/Console/Commands/GenerateSitemap.php
use Illuminate\Console\Command; use Spatie\Sitemap\SitemapGenerator; class GenerateSitemap extends Command { protected $signature = 'sitemap:generate'; protected $description = 'Generating the sitemap for the site'; public function handle() { SitemapGenerator::create('https://parsinta.com/')->writeToFile(public_path('sitemap.xml')); $this->info('The sitemap has been generated'); } }
phpCopy

Setelah itu, kita bisa trigger dia dari terminal dengan cara

terminal
php artisan sitemap:generate
bashCopy

Jika tidak ada yang salah, harusnya sekarang pada folder public sudah ada file yang namanya sitemap.xml yang isinya kurang lebih seperti ini:

sitemap.xml
<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml"> <url> <loc>https://parsinta.com/</loc> <lastmod>2022-04-04T23:48:19+07:00</lastmod> <changefreq>daily</changefreq> <priority>0.8</priority> </url> <url> <loc>https://parsinta.com/series</loc> <lastmod>2022-04-04T23:48:19+07:00</lastmod> <changefreq>daily</changefreq> <priority>0.8</priority> </url> ...
xmlCopy

Baik, sekarang mungkin Anda berfikir, jika di production, apa kita harus secara manual menjalankan sitemap generate ini pada terminal. Behind the scene ia, tapi kita tidak akan ngetikkan itu secara manual dong, dan setiap update masak kita harus trigger. Nah dalam case ini, Anda bisa menggunakan yang namanya scheduler.

Perhatikan pada directory app/Console, pastinya ada file nya Kernel.php, nah didalam method schedule Anda bisa tambahkan command yang kita buat tadi seperti:

app/Console/Kernel.php
protected function schedule(Schedule $schedule) { $schedule->command('sitemap:generate')->daily(); }
phpCopy

Maka selanjutnya, jika Anda list schedulenya, harusnya sudah pasti ada untuk sitemap ini.

terminal
php artisan schedule:list ... 0 0 * * * php artisan sitemap:generate
bashCopy

Selanjutnya, Anda bisa menyuruh Supervisor untuk menjalankan command tersebut. Dan pastinya, jika menggunakan Laravel forge maka untuk menjalankan ini akan sangat mudah.

Semoga artikel ini bermanfaat. dan sampai jumpa di artikel selanjutnya.

Irsyad A. Panjaitan

Let's start living like no one can help us in any event, so that when we are helped in certain times, it becomes a plus in itself.
2

Share on