Laravel — создание sitemap.xml карты сайта
Создаем Sitemap Controller
php artisan make:controller SitemapControllerОткрываем SitemapController.php и генерируем наш индекс, выбрав все интересующие нас модели, в данном примере это Post. Выбираем по дате обновления - updated_at. У меня на сайте это published_at.
public function index()
{
$posts = Post::orderBy('updated_at', 'desc')->get();
return response()->view('sitemap', [
'posts' => $posts,
])->header('Content-Type', 'text/xml');
}Создадим шаблон blade sitemap:
<?php echo '<?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">
@foreach ($posts as $post)
<url>
<loc>https://limitless.pro/blog/{{ $post->slug }}</loc>
<lastmod>{{ $post->published_at->tz('UTC')->toAtomString() }}</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
@endforeach
</urlset>
Добавим роут
Route::get('/sitemap', 'SitemapController@index');
Route::get('/sitemap.xml', 'SitemapController@index');
Готово.