Ваш сайт на Yii2 быстрый и красивый, но Google его не видит? Знакомая история. Многие разработчики увлекаются кодом и забывают, что сайт создан для людей и поисковых роботов. В этой статье я расскажу, как настроить SEO в Yii2 проекте без боли и лишних плагинов. Только практика и примеры кода.

Digital-студия WNDER

Почему 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 на разных страницах. Поисковики это не любят.

Правило: Каждая страница должна иметь уникальный 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:


' ?>

    
        
            
            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 станет заметнее в выдаче. Удачи!

Студия WNDER