• Время чтения ~2 мин
  • 19.10.2023

По данным 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 для получения полных сведений о настройке, настройке и использовании для вашего приложения.

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

Про мене

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

Об авторе CrazyBoy49z
WORK EXPERIENCE
Контакты
Ukraine, Lutsk
+380979856297