По данным Google, большинству сайтов была бы полезна карта сайта, которая помогает ботам знать, какие страницы следует сканировать.
Карта сайта — это файл, в котором вы предоставляете информацию о страницах, видео и других файлах вашего сайта, а также о связях между ними. Поисковые системы, такие как Google, считывают этот файл, чтобы более эффективно сканировать ваш сайт. Карта сайта сообщает Google, какие страницы и файлы вы считаете важными на вашем сайте, а также предоставляет ценную информацию об этих файлах. Например, когда страница была обновлена в последний раз, а также любые альтернативные языковые версии страницы.
Их можно создать вручную, и у нас есть руководство о том, как создать карту сайта вручную здесь, но пакет под названием "laravel-sitemap" от Spatie делает создание карты сайта проще, чем когда-либо.
Одним из преимуществ пакета является то, что он предоставляет два метода создания карты сайта. Во-первых, он может автоматически сканировать ваш сайт и создавать его на основе внутренних ссылок, или вы можете иметь полный контроль и создавать его вручную.
Автоматическое сканирование карты сайта Laravel Все, что вам нужно сделать для автоматического сканирования, это установить packakge, а затем сообщить ему URL-адрес, чтобы начать сканирование
.
use Spatie\Sitemap\SitemapGenerator;
$path = public_path('sitemap.xml');
SitemapGenerator::create('https://example.com')->writeToFile($path);
Генератор может выполнять JavaScript на каждой странице, поэтому ссылки, введенные в dom JavaScript, также будут сканироваться.
Ручная настройка
карты сайта Laravel Я использую это здесь, на Laravel News, потому что у нас есть тысячи страниц, которые нужно добавить в индекс. Чтобы настроить это, сначала примените код к вашим моделям:
use Spatie\Sitemap\Contracts\Sitemapable;
use Spatie\Sitemap\Tags\Url;
class Article extends Model implements Sitemapable
{
public function toSitemapTag(): Url | string | array
{
return Url::create(route('article.details', $this))
->setLastModificationDate(Carbon::create($this->updated_at))
->setChangeFrequency(Url::CHANGE_FREQUENCY_YEARLY)
->setPriority(0.1);
}
}
Затем вы можете сгенерировать свою карту сайта следующим образом:Как мы используем карту
use Spatie\Sitemap\Sitemap;
Sitemap::create()
->add(Post::all()
->writeToFile(public_path('sitemap.xml'));
сайта Laravel Как уже упоминалось, мы используем ручную настройку, и вот полный код для создания нашей карты сайта:
Sitemap::create()
->add($this->build_index(Article::active()->get(), 'sitemap_articles.xml'))
->add($this->build_index(Partner::active()->get(), 'sitemap_partners.xml'))
->add($this->build_index(Category::all(), 'sitemap_categories.xml'))
->add($this->build_index(Package::all(), 'sitemap_packages.xml'))
->add(Url::create('/')->setPriority(1)->setChangeFrequency(Url::CHANGE_FREQUENCY_ALWAYS))
->add(Url::create('/newsletter')->setPriority(0.5)->setChangeFrequency(Url::CHANGE_FREQUENCY_MONTHLY))
->add(Url::create('/popular-laravel-packages')->setPriority(0.5)->setChangeFrequency(Url::CHANGE_FREQUENCY_MONTHLY))
->add(Url::create('/links')->setPriority(0.5)->setChangeFrequency(Url::CHANGE_FREQUENCY_ALWAYS))
->add(Url::create('/links/new')->setPriority(0.5)->setChangeFrequency(Url::CHANGE_FREQUENCY_ALWAYS))
->add(Url::create('/partners')->setPriority(0.5)->setChangeFrequency(Url::CHANGE_FREQUENCY_ALWAYS))
->add(Url::create('/partners/agencies')->setPriority(0.5)->setChangeFrequency(Url::CHANGE_FREQUENCY_ALWAYS))
->add(Url::create('/partners/tools')->setPriority(0.5)->setChangeFrequency(Url::CHANGE_FREQUENCY_ALWAYS))
->add(Url::create('/partners/education')->setPriority(0.5)->setChangeFrequency(Url::CHANGE_FREQUENCY_ALWAYS))
->writeToFile(public_path('sitemap.xml'));
Первая часть строит индексы с большим количеством результатов, затем мы вручную добавляем страницы, которые находятся из основной навигации. Прилагаемое видео содержит полную информацию.
Дополнительные сведения
см. в пакете officia для получения полных сведений о настройке, настройке и использовании для вашего приложения.