Laravel : créer facilement un sitemap

Je vous présente un paquet qui vous permet de générer très facilement un sitemap pour votre site sous Laravel.

Laravel : créer facilement un sitemap

Générer un sitemap à la main peut être fastidieux, surtout si votre site internet comporte beaucoup de pages.

J’ai la solution à ce problème grâce au paquet laravel-sitemap de Spatie.

Quels sont les avantages de ce paquet ?

Générer un sitemap facilement

Ce paquet permet de générer un sitemap sans avoir besoin de renseigner manuellement vos URL. Cette méthode fonctionne en parcourant entièrement votre site.

use Spatie\Sitemap\SitemapGenerator;
 
SitemapGenerator::create('https://jonathan.j2lconcept.fr')->writeToFile($path);

Vous pouvez aussi créer un sitemap manuellement :

use Carbon\Carbon;
use Spatie\Sitemap\Sitemap;
use Spatie\Sitemap\Tags\Url;
 
Sitemap::create()
 
->add(Url::create('/accueil')
->setLastModificationDate(Carbon::yesterday())
->setChangeFrequency(Url::CHANGE_FREQUENCY_YEARLY)
->setPriority(0.1))
 
->add(...)
 
->writeToFile($path);

Vous pouvez aussi profiter du meilleur des deux mondes en générant un sitemap automatiquement et en ajoutant vos URL manuellement :

SitemapGenerator::create('https://jonathan.j2lconcept.fr')
->getSitemap()
->add(Url::create('/ma-super-page')
->setLastModificationDate(Carbon::yesterday())
->setChangeFrequency(Url::CHANGE_FREQUENCY_YEARLY)
->setPriority(0.1))
 
->add(...)
 
->writeToFile($path);

D’autres cas d’usages sont détaillés dans la documentation officielle.

Installation

Pour installer ce paquet vous devez passer par Composer avec la commande :

composer require spatie/laravel-sitemap

Le paquet va se référencer lui-même dans votre application.

Configuration de base

Vous pouvez surcharger la configuration initiale du paquet en publiant le fichier de configuration :

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

Cela va copier le fichier de configuration par défaut vers config/sitemap.php.

Le fichier ressemble à ça :

use GuzzleHttp\RequestOptions;
use Spatie\Sitemap\Crawler\Profile;
 
return [
 
/*
* These options will be passed to GuzzleHttp\Client when it is created.
* For in-depth information on all options see the Guzzle docs:
*
* http://docs.guzzlephp.org/en/stable/request-options.html
*/
'guzzle_options' => [
 
/*
* Whether or not cookies are used in a request.
*/
RequestOptions::COOKIES => true,
 
/*
* The number of seconds to wait while trying to connect to a server.
* Use 0 to wait indefinitely.
*/
RequestOptions::CONNECT_TIMEOUT => 10,
 
/*
* The timeout of the request in seconds. Use 0 to wait indefinitely.
*/
RequestOptions::TIMEOUT => 10,
 
/*
* Describes the redirect behavior of a request.
*/
RequestOptions::ALLOW_REDIRECTS => false,
],
 
/*
* The sitemap generator can execute JavaScript on each page so it will
* discover links that are generated by your JS scripts. This feature
* is powered by headless Chrome.
*/
'execute_javascript' => false,
 
/*
* The package will make an educated guess as to where Google Chrome is installed.
* You can also manually pass it's location here.
*/
'chrome_binary_path' => '',
 
/*
* The sitemap generator uses a CrawlProfile implementation to determine
* which urls should be crawled for the sitemap.
*/
'crawl_profile' => Profile::class,
 
];

Pour aller plus loin

Si vous souhaitez aller plus loin dans la découverte de ce paquet je vous invite à vous rendre sur la page du dépôt GitHub.

Contenus associés

Laravel Artisan : make - le guide complet

Le framework Laravel dispose d'un ensemble complet de commandes, la plus utilisée étant certainement make. Connaissez-vous toutes les commandes disponibles ?

Laravel Artisan : make - le guide complet
Forcer la redirection HTTP vers HTTPS sur Laravel 8, 9 et plus

Votre hébergeur ne propose pas le HTTPS par défaut, vous ne pouvez pas modifier le htaccess… Comment faire ? J’ai LA réponse à vos questions.

Forcer la redirection HTTP vers HTTPS sur Laravel 8, 9 et plus
Hébergez vos polices Google sans effort avec Laravel

Pensez à héberger vos polices Google sur votre serveur : vous gagnerez en vitesse de chargement et vous serez en règle avec le RGPD. Je vous donne ma méthode dans cet article.

Hébergez vos polices Google sans effort avec Laravel
Fonctionnement du blog : pourquoi Laravel et WordPress

J’explique dans cet article pourquoi j’ai choisi Laravel et WordPress comme stack de départ pour le fonctionnement de ce blog.

Fonctionnement du blog : pourquoi Laravel et WordPress
Laravel Eloquent : insertGetId - insérer et récupérer l'ID d'un enregistrement en une ligne

Laravel offre la possibilité d'insérer un enregistrement et de récupérer son ID en une ligne. Cet article vous explique comment faire.

Laravel Eloquent : insertGetId - insérer et récupérer l'ID d'un enregistrement en une ligne
Laravel Livewire : l'importance de sécuriser l'ID de son model

Livewire est un framework pour Laravel qui permet de créer des interfaces dynamiques depuis le backend. Attention tout de même à la sécurité.

Laravel Livewire : l'importance de sécuriser l'ID de son model