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.

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.