Ваш сайт на Yii2 быстрый и красивый, но Google его не видит? Знакомая история. Многие разработчики увлекаются кодом и забывают, что сайт создан для людей и поисковых роботов. В этой статье я расскажу, как настроить SEO в Yii2 проекте без боли и лишних плагинов. Только практика и примеры кода.
Почему Yii2 — это уже половина успеха
Yii2 — фреймворк, который сам по себе заточен под производительность. А скорость — один из факторов ранжирования. Но даже самый быстрый сайт не выйдет в топ, если не настроить базовые вещи: мета-теги, ЧПУ, карту сайта. Давайте по порядку.
Мета-теги: не просто title и description
В Yii2 есть удобный механизм для управления мета-тегами. Можно задавать их в контроллере или во вьюхе. Главное — не забывать, что title должен быть уникальным для каждой страницы, а description — отражать суть.
Пример установки мета-тегов в контроллере:
$this->view->title = 'Купить слона в Москве — зоомагазин «Уши и хобот»';
$this->view->registerMetaTag([
'name' => 'description',
'content' => 'Огромный выбор слонов. Доставка по Москве и области. Гарантия качества.'
]);
$this->view->registerMetaTag([
'name' => 'keywords',
'content' => 'слон, купить слона, зоомагазин'
]);
А можно и во вьюхе, если нужно динамически подставлять данные:
title = $model->title . ' — Мой сайт';
$this->registerMetaTag(['name' => 'description', 'content' => $model->description]);
?>
Важно: не дублируйте title и description на разных страницах. Поисковики это не любят.
ЧПУ: делаем URL красивыми и понятными
ЧПУ (человекопонятные URL) — это когда ссылка выглядит как /catalog/slon, а не /index.php?r=site%2Fview&id=123. В Yii2 это настраивается в конфиге приложения.
Откройте config/web.php и добавьте компонент urlManager:
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'catalog/' => 'catalog/view',
'about' => 'site/about',
// другие правила
],
],
Не забудьте создать .htaccess для Apache или настроить Nginx, чтобы все запросы шли через index.php. Пример для Apache:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
Теперь ваши ссылки станут красивыми, а поисковики будут их лучше индексировать.
Карта сайта и robots.txt: показываем роботам дорогу
Карта сайта (sitemap.xml) помогает поисковикам быстрее находить новые страницы. В Yii2 можно сгенерировать её с помощью расширения yii2-sitemap или написать простой контроллер.
Пример генерации sitemap без лишних библиотек:
public function actionSitemap()
{
$urls = [];
// добавляем статические страницы
$urls[] = ['loc' => Url::to(['/site/index'], true)];
$urls[] = ['loc' => Url::to(['/site/about'], true)];
// добавляем динамические (например, товары)
foreach (Product::find()->all() as $product) {
$urls[] = ['loc' => Url::to(['/product/view', 'slug' => $product->slug], true)];
}
Yii::$app->response->format = \yii\web\Response::FORMAT_XML;
return $this->renderPartial('sitemap', ['urls' => $urls]);
}
А в представлении sitemap.php формируем XML:
' ?>
= $url['loc'] ?>
weekly
0.8
Не забудьте добавить ссылку на sitemap в robots.txt:
Sitemap: https://вашсайт.ru/sitemap.xml
И не закрывайте лишнее в robots.txt — только служебные разделы.
Микроразметка и Open Graph: для соцсетей и не только
Микроразметка помогает поисковикам понять, что на странице (товар, статья, рецепт). А Open Graph — это то, как ваша страница выглядит при репосте в соцсетях.
В Yii2 можно добавить теги Open Graph в layout или через registerMetaTag с атрибутом property:
$this->registerMetaTag(['property' => 'og:title', 'content' => $this->title]);
$this->registerMetaTag(['property' => 'og:description', 'content' => 'Описание страницы']);
$this->registerMetaTag(['property' => 'og:image', 'content' => Url::to('@web/images/logo.png', true)]);
Для микроразметки JSON-LD используйте компонент yii\helpers\Json:
$jsonLd = [
'@context' => 'https://schema.org',
'@type' => 'Product',
'name' => $model->title,
'description' => $model->description,
'offers' => [
'@type' => 'Offer',
'price' => $model->price,
'priceCurrency' => 'RUB',
],
];
$this->registerJs('var jsonLd = ' . Json::encode($jsonLd) . ';', \yii\web\View::POS_HEAD, 'jsonld');
Или просто вставьте в вьюху:
Такая разметка может дать расширенные сниппеты в выдаче.
Скорость загрузки: Yii2 умеет, но проверьте
Yii2 предоставляет инструменты для кеширования и оптимизации. Включите кеширование схемы БД, используйте yii\web\View с кешированием фрагментов. Например:
if ($this->beginCache('product-list', ['duration' => 3600])) {
echo $this->render('_productList', ['products' => $products]);
$this->endCache();
}
Также сжимайте и объединяйте CSS/JS через AssetManager. Не забывайте про gzip на сервере.
Что в итоге
SEO в Yii2 — это не магия, а набор простых действий: уникальные мета-теги, ЧПУ, карта сайта, микроразметка и скорость. Начните с основ, и поисковики скажут вам спасибо. Главное — не забывайте обновлять sitemap и следить за дублями страниц.
Внедрите эти советы, и ваш сайт на Yii2 станет заметнее в выдаче. Удачи!
