spatie/laravel-sitemap
Generate XML sitemaps for Laravel by crawling your site or building them manually. Add extra URLs, set last-modified dates, and include models via a simple interface. Write sitemaps to disk with a fluent, developer-friendly API.
The crawler itself can be configured to do a few different things.
You can configure the crawler used by the sitemap generator, for example, to ignore robot checks:
use Spatie\Crawler\Crawler;
use Spatie\Sitemap\SitemapGenerator;
SitemapGenerator::create('https://example.com')
->configureCrawler(function (Crawler $crawler) {
$crawler->ignoreRobots();
})
->writeToFile($sitemapPath);
You can limit the amount of pages crawled by calling setMaximumCrawlCount:
use Spatie\Sitemap\SitemapGenerator;
SitemapGenerator::create('https://example.com')
->setMaximumCrawlCount(500)
->writeToFile($sitemapPath);
You can set the number of concurrent connections the crawler will use:
use Spatie\Sitemap\SitemapGenerator;
SitemapGenerator::create('https://example.com')
->setConcurrency(1)
->writeToFile($sitemapPath);
The default concurrency is 10.
You can limit how deep the crawler follows links:
use Spatie\Crawler\Crawler;
use Spatie\Sitemap\SitemapGenerator;
SitemapGenerator::create('https://example.com')
->configureCrawler(function (Crawler $crawler) {
$crawler->depth(3);
})
->writeToFile($path);
The sitemap generator can execute JavaScript on each page so it will discover links that are generated by your JS scripts. You can enable this feature by setting execute_javascript in the config file to true.
Under the hood, headless Chrome is used to execute JavaScript. You'll need to install spatie/browsershot separately:
composer require spatie/browsershot
Here are some pointers on how to install it on your system.
The package will make an educated guess as to where Chrome is installed on your system. You can also set the path in config/sitemap.php.
How can I help you explore Laravel packages today?