Веб-сайты с большим количеством страниц часто имеют проблемы с оптимизацией индексации поисковыми системами. Роботы поисковых систем иногда не могут правильно проследовать по всем ссылкам на сайте и не всегда знают, какие страницы находятся во внутренних разделах или на других языках.
Для решения этой проблемы существует стандартный протокол, называемый Sitemap. Sitemap — это файл XML, который содержит информацию о страницах вашего сайта, их приоритете, частоте изменений и других метаданных. Он помогает поисковым системам более эффективно индексировать и показывать в поисковых результатах страницы вашего сайта.
В Yii2 фреймворке есть готовый компонент для работы с Sitemap, который может сгенерировать XML-файл Sitemap на основе данных вашего приложения. В этой статье мы рассмотрим, как настроить использование Sitemap в Yii2 и добавить его в ваше приложение.
Основы настройки Sitemap в Yii2
Чтобы начать использовать Sitemap в Yii2, вам нужно выполнить несколько простых шагов:
Шаг 1: | Установите расширение yii2-sitemap с помощью Composer, добавив его в файл composer.json: |
"yiisoft/yii2-sitemap": "*" | |
Шаг 2: | Настройте компонент sitemap в конфигурационном файле вашего приложения (например, в файле config/web.php). Укажите базовый URL вашего сайта и путь, по которому будет сохраняться XML-файл карты сайта. |
'components' => [ | |
Шаг 3: | Определите методы действия SitemapController для генерации XML-файла карты сайта. В этих методах вы можете указать, какие страницы должны быть включены в карту сайта. |
public function actionIndex() |
После завершения этих шагов вы можете получить карту сайта по адресу http://example.com/sitemap.xml. При проверке вашей карты сайта убедитесь, что она не содержит ошибок и включает все необходимые страницы.
Настройка и использование карты сайта в Yii2 очень просты и могут значительно улучшить видимость вашего сайта в поисковых системах. Не забывайте регулярно обновлять карту сайта при добавлении новых страниц или изменении старых.
Шаг 1. Создание Sitemap.xml
Для начала работы с Sitemap в Yii2, необходимо создать файл sitemap.xml.
В этом файле будут содержаться ссылки на все страницы вашего сайта, которые вы хотите индексировать поисковыми системами.
Создайте новый файл с именем sitemap.xml и разместите его в корневой директории вашего проекта.
Далее, вам нужно заполнить файл sitemap.xml соответствующим содержимым. Для каждой страницы вашего сайта добавьте элемент <url> внутри элемента <urlset>.
Каждый элемент <url> должен содержать следующие подэлементы:
- <loc>: URL страницы. Например, <loc>http://example.com/about</loc>
- <lastmod>: Дата последнего изменения страницы в формате ГГГГ-ММ-ДД. Например, <lastmod>2022-01-01</lastmod>
- <changefreq>: Частота изменений содержимого страницы. Возможные значения: always, hourly, daily, weekly, monthly, yearly, never. Например, <changefreq>monthly</changefreq>
- <priority>: Приоритет страницы для поисковой системы. Значение должно быть числом от 0.0 до 1.0. Например, <priority>0.8</priority>
Пример заполнения файла sitemap.xml:
<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><url><loc>http://example.com/about</loc><lastmod>2022-01-01</lastmod><changefreq>monthly</changefreq><priority>0.8</priority></url><url><loc>http://example.com/contact</loc><lastmod>2022-01-01</lastmod><changefreq>monthly</changefreq><priority>0.5</priority></url></urlset>
В этом примере заданы две страницы – «О нас» и «Контакты». Вам нужно добавить элементы <url> для каждой страницы вашего сайта, которую вы хотите индексировать.
Шаг 2. Настройка маршрутов для Sitemap
После того, как мы создали генератор карты сайта, нам необходимо настроить маршруты для доступа к нему.
1. Откройте файл config/web.php
в корневом каталоге вашего проекта.
- 2. Внутри массива
components
создайте новый элемент с именем'urlManager'
: 'urlManager' => ['enablePrettyUrl' => true,'showScriptName' => false,'rules' => ['sitemap.xml' => 'site/sitemap',],],
- 3. В созданном элементе
'urlManager'
установите свойство'enablePrettyUrl'
в значениеtrue
для включения читаемых URL-адресов. - 4. Установите свойство
'showScriptName'
в значениеfalse
для скрытия имени скрипта в URL-адресах. - 5. Создайте правило маршрута, где
'sitemap.xml'
— это URL-адрес карты сайта, а'site/sitemap'
— это маршрут контроллера и действия, которые будут отвечать за генерацию карты сайта.
Теперь мы настроили маршрут для доступа к генератору карты сайта по адресу sitemap.xml
.
Перейдите к следующему шагу, чтобы узнать, как создать контроллер и действие для генерации карты сайта.
Шаг 3. Генерация Sitemap.xml
После того, как мы создали модель и настроили контроллер для генерации Sitemap.xml, перейдем к этапу генерации самого файла.
Для этого в контроллере SitemapController нужно создать действие actionGenerate(), которое будет отвечать за генерацию Sitemap.xml.
Внутри действия actionGenerate() мы будем использовать модель Sitemap, чтобы получить данные для создания файла Sitemap.xml:
$model = new Sitemap;
$data = $model->getDataForSitemap();
Здесь мы создаем новый экземпляр модели Sitemap и вызываем метод getDataForSitemap(), который вернет нам массив данных для генерации Sitemap.xml.
Далее, нам нужно создать XML-документ с помощью библиотеки SimpleXMLElement. Мы будем использовать этот XML-документ для записи данных в формате XML:
$xml = new SimpleXMLElement('');
Затем, мы будем итерировать массив данных и для каждого элемента массива создавать новый узел XML и добавлять его в XML-документ:
foreach ($data as $item) {
$url = $xml->addChild('url');
$loc = $url->addChild('loc', $item['url']);
$lastmod = $url->addChild('lastmod', $item['lastmod']);
$changefreq = $url->addChild('changefreq', $item['changefreq']);
$priority = $url->addChild('priority', $item['priority']);
}
Здесь мы создаем узлы XML (url, loc, lastmod, changefreq, priority) и присваиваем им значения из массива данных.
После того, как мы завершим итерацию, нам нужно сохранить XML-документ в виде файла Sitemap.xml:
$xml->asXML(Yii::getAlias('@webroot/sitemap.xml'));
Здесь мы используем метод asXML() объекта SimpleXMLElement, чтобы сохранить XML-документ в виде строки, и метод Yii::getAlias() для получения абсолютного пути до директории webroot. Затем, мы записываем эту строку в файл sitemap.xml внутри директории webroot.
Теперь, когда мы завершили действие actionGenerate(), остается только вызвать это действие в нужный нам момент. Например, мы можем вызывать это действие при каждом запросе к сайту, чтобы обновлять файл Sitemap.xml автоматически.
Для этого, мы можем добавить следующий код в метод beforeAction() базового контроллера BaseController:
$sitemapController = new SitemapController;
$sitemapController->actionGenerate();
Здесь мы создаем новый экземпляр контроллера SitemapController и вызываем его действие actionGenerate(). Таким образом, при каждом запросе к сайту будет обновляться файл Sitemap.xml.
Шаг 4. Отправка Sitemap.xml в поисковые системы
После создания и обновления Sitemap.xml файл необходимо отправить в поисковые системы. Это позволит поисковым роботам быстрее индексировать ваши страницы и улучшить их позицию в результатах поиска.
В Yii2 для отправки Sitemap.xml в поисковые системы можно использовать следующий код:
Поисковая система | URL |
---|---|
https://www.google.com/webmasters/tools/submit-url | |
Яндекс | https://webmaster.yandex.ru/site/ |
Бинг | https://www.bing.com/toolbox/webmaster/ |
Для отправки Sitemap.xml нужно перейти по соответствующей ссылке, зарегистрироваться или войти в свой аккаунт (если уже зарегистрированы), выбрать ваш сайт и предоставить URL-адрес вашего Sitemap.xml файла.
Обратите внимание, что время индексации страниц может занимать некоторое время, особенно в случае нового сайта или обновления большого количества страниц.
Повторная отправка Sitemap.xml может быть полезна при внесении значительных изменений или добавлении новых страниц на сайт для обновления поисковыми системами.