Как создать карту сайта в Laravel

Поисковые системы используют карты сайта (sitemaps), чтобы находить и индексировать ваши страницы. Карта сайта — это XML-файл. Он сообщает Google и Bing, какие URL-адреса существуют на вашем сайте.

Вы можете создать карту сайта в Laravel, используя пакет Spatie Sitemap.

Выполните следующие шаги для настройки.

  1. Установите пакет Выполните эту команду в терминале: composer require spatie/laravel-sitemap

  2. Создайте контроллер Сгенерируйте новый контроллер для обработки логики: php artisan make:controller GenerateSitemap

  3. Напишите логику Откройте ваш новый контроллер и добавьте этот код:

namespace App\Http\Controllers;

use Spatie\Sitemap\Sitemap;
use Spatie\Sitemap\Tags\Url;
use App\Models\Post;

class GenerateSitemap extends Controller
{
public function index()
{
$sitemap = Sitemap::create();

$sitemap->add(
Url::create('/')
->setPriority(1.0)
->setChangeFrequency(Url::CHANGE_FREQUENCY_DAILY)
);

Post::with('category')
->where('status', 1)
->latest()
->get()
->each(function ($post) use ($sitemap) {
$sitemap->add(
Url::create($post->category->slug . '/' . $post->slug)
->setLastModificationDate($post->updated_at)
->setPriority(0.9)
->setChangeFrequency(Url::CHANGE_FREQUENCY_WEEKLY)
);
});

$sitemap->writeToFile(public_path('sitemap.xml'));

return back()->with('success', 'Sitemap Generated!');
}
}

Что делает этот код:

  • Создает новый объект sitemap.
  • Добавляет вашу главную страницу с высоким приоритетом.
  • Перебирает посты из вашей базы данных.
  • Добавляет URL каждого поста в файл.
  • Сохраняет файл в папку public под именем sitemap.xml.

Ваша карта сайта будет доступна по адресу yourdomain.com/sitemap.xml.

Это помогает поисковым системам быстро находить ваш новый контент.

Источник: https://dev.to/mindwarezone/how-to-generate-a-sitemap-in-laravel-a-complete-guide-4go6