Do you want to create an XML sitemap in Laravel? The XML sitemap is a special document that lists all pages of your website. Google looks into your XML sitemap and crawls them all. The search engine gets an idea about your website structure through this document. As a website owner, you must create the XML sitemap which helps to rank better in search engine results.
Create XML Sitemap in Laravel
In Laravel, one can generate sitemaps by writing custom code. In that case, you may need to fetch all your pages from the database and add the page links to the sitemap file.
The other option is to add all your routes manually (instead of fetching them from the database) and generate a sitemap out of it.
We are going to see a third option where you neither need to fetch pages from the database nor follow a manual process. Instead, it will crawl your website and generate a sitemap automatically.
For this, you need to install the package spatie/laravel-sitemap using the command below.
composer require spatie/laravel-sitemap
Create a route to generate XML sitemap as follows.
Route::get('/generate-sitemap', 'SitemapController@generatesitemap');
Next, create a controller SitemapController
using the Artisan command.
php artisan make:controller SitemapController
Add the code below to the SitemapController.php
file.
use Spatie\Sitemap\SitemapGenerator;
class SitemapController extends Controller
{
public function generatesitemap()
{
$path = public_path('sitemap.xml');
SitemapGenerator::create(env('APP_URL'))->writeToFile($path);
}
}
I have passed a ‘public’ directory path as our sitemap.xml
document should be inside this folder. The package takes a site URL from the environment variable ‘APP_URL’.
Run the SITE_URL/generate-sitemap
on the browser. Access your sitemap at SITE_URL/sitemap.xml
, you should now see your XML sitemap with all your pages listed.
Add Routes Manually
The package also allows you to add URLs manually in your sitemap. You can do it using the code shown below.
use Spatie\Sitemap\SitemapGenerator;
use Carbon\Carbon;
use Spatie\Sitemap\Tags\Url;
class SitemapController extends Controller
{
public function generatesitemap()
{
$path = public_path('sitemap.xml');
SitemapGenerator::create(env('APP_URL'))
->getSitemap()
->add(Url::create('/payment')
->setLastModificationDate(Carbon::yesterday())
->setChangeFrequency(Url::CHANGE_FREQUENCY_YEARLY)
->setPriority(0.1))
->add(Url::create('/services')
->setLastModificationDate(Carbon::yesterday())
->setChangeFrequency(Url::CHANGE_FREQUENCY_YEARLY)
->setPriority(0.1))
->writeToFile($path);
}
}
This is how we can easily create the XML sitemap in Laravel. You may read more about this package in the documentation.
Related Articles
- How to Install and Use Trix Editor in Laravel
- How to Create a Blog with Laravel
- Laravel GeoIP Library – Find Out Geolocation Using IP Address
If you liked this article, then please subscribe to our YouTube Channel for video tutorials.