Как оптимизировать сайт под Яндекс.Вебмастер и улучшить позиции в 2015 году
Коротко: Добавьте сайт в Яндекс.Вебмастер, настройте robots.txt с директивой Host:, добавьте структурированные данные Schema.org, убедитесь что страницы индексируются без дублей (www/без www, HTTP/HTTPS). Яндекс в 2015 году сильнее Google реагировал на региональную привязку и поведенческие факторы.
Регистрация в Яндекс.Вебмастере
<!-- Файл подтверждения прав: yandex_verification_code.html -->
<!-- Или meta-тег в <head>: -->
<meta name="yandex-verification" content="ваш-код-верификации" />
После добавления в Вебмастер — проверить:
- Индексирование → Страницы в поиске → убедиться что нет ошибок 4xx
- Сайт в поиске → Исключённые страницы → нет ли важных страниц в исключениях
- Настройки → Регион сайта → указать правильный регион (важно для локального поиска)
robots.txt для Яндекса
# robots.txt — директива Host: специфична для Яндекса (не поддерживается Google)
User-agent: *
Disallow: /admin/
Disallow: /cabinet/
Disallow: /search/
Disallow: /?sort=
Disallow: /?filter=
Allow: /
# Яндекс-специфично: директива Host указывает главное зеркало
# Важно когда сайт доступен на www и без www
Host: mysite.ru
# Sitemap
Sitemap: https://mysite.ru/sitemap.xml
# Замедлить краулинг если сервер нагружен
# Crawl-delay: 1
Устранение дублей страниц
<?php
// В 2015 году Яндекс хуже Google разбирался с дублями
// Главное: один канонический URL для каждой страницы
// functions.php или bootstrap
function canonicalRedirect(): void {
$host = $_SERVER['HTTP_HOST'];
$isWww = str_starts_with($host, 'www.');
$isHttps = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off');
// Всё приводим к https://mysite.ru (без www)
if ($isWww || !$isHttps) {
$newUrl = 'https://' . ltrim($host, 'www.') . $_SERVER['REQUEST_URI'];
header('HTTP/1.1 301 Moved Permanently');
header('Location: ' . $newUrl);
exit;
}
}
canonicalRedirect();
<!-- В <head> каждой страницы: canonical тег -->
<link rel="canonical" href="https://mysite.ru/catalog/widgets/">
<!-- Если страница пагинирована — prev/next для Яндекса важны -->
<link rel="prev" href="https://mysite.ru/catalog/widgets/?page=2">
<link rel="next" href="https://mysite.ru/catalog/widgets/?page=4">
Структурированные данные (Schema.org) для Яндекса
<!-- Яндекс в 2015 поддерживал microdata (не JSON-LD — это Google предпочитал) -->
<!-- Карточка товара -->
<div itemscope itemtype="http://schema.org/Product">
<h1 itemprop="name">Виджет премиум</h1>
<div itemprop="offers" itemscope itemtype="http://schema.org/Offer">
<span itemprop="price">1490</span>
<span itemprop="priceCurrency">RUB</span>
<link itemprop="availability" href="http://schema.org/InStock"/>
<span>В наличии</span>
</div>
<div itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating">
Рейтинг: <span itemprop="ratingValue">4.7</span> / 5
(<span itemprop="reviewCount">23</span> отзыва)
</div>
<p itemprop="description">Описание товара для поисковиков...</p>
</div>
Региональное SEO: как привязать сайт к городу
<?php
// Яндекс учитывал региональные сигналы:
// 1. Регион в Вебмастере (устанавливается в UI)
// 2. Адрес в footer + contacts
// 3. Телефон с городским кодом
// 4. Ссылки с региональных сайтов
// Для мультирегионального сайта — отдельные поддомены или папки:
// moscow.mysite.ru или mysite.ru/moscow/
// В meta tags:
echo '<meta name="geo.region" content="RU-MOW">'; // Москва
echo '<meta name="geo.placename" content="Москва">';
echo '<meta name="geo.position" content="55.751244;37.618423">'; // Координаты
Яндекс.Метрика: настройка целей для SEO
<!-- Яндекс.Метрика 2015 — поведенческие факторы влияли на ранжирование -->
<!-- Цели: показывают Яндексу что пользователи совершают целевые действия -->
<script type="text/javascript">
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "//mc.yandex.ru/metrika/watch.js", "ym");
ym(XXXXXX, "init", {
id: XXXXXX,
clickmap: true,
trackLinks: true,
accurateTrackBounce: true, // Уточнённый показатель отказов
webvisor: true, // Запись сессий (видеозапись поведения)
trackHash: true
});
// Цель: клик на номер телефона
document.querySelectorAll('a[href^="tel:"]').forEach(function(el) {
el.addEventListener('click', function() {
ym(XXXXXX, 'reachGoal', 'phone_click');
});
});
// Цель: отправка формы
document.getElementById('contact-form').addEventListener('submit', function() {
ym(XXXXXX, 'reachGoal', 'form_submit');
});
</script>
Технический чеклист для Яндекса (2015)
☑ robots.txt с директивой Host: (основное зеркало)
☑ Sitemap в Вебмастере, обновляется при новом контенте
☑ Canonical теги на всех страницах с параметрами
☑ 301 редирект www → без www (или наоборот, последовательно)
☑ Мета-роботс noindex на /search/, /tag/, дублированных страницах
☑ Schema.org microdata на товарах и услугах
☑ Регион указан в Вебмастере
☑ Яндекс.Метрика с целями
☑ Скорость загрузки < 3 секунд (Яндекс.Вебмастер показывает медленные страницы)
☑ Мобильная версия (алгоритм «Владивосток» апрель 2015 — мобильный поиск)
Алгоритм «Владивосток» (апрель 2015)
Яндекс запустил его раньше Google Mobile-Friendly Update (май 2015). С апреля 2015 сайты без мобильной версии теряли позиции в мобильном поиске Яндекса.
// Мобильный редирект на PHP (до адаптивного дизайна)
function redirectMobile(): void {
$isMobile = preg_match(
'/Mobile|Android|iPhone|iPad|iPod|BlackBerry|IEMobile/i',
$_SERVER['HTTP_USER_AGENT'] ?? ''
);
if ($isMobile && !str_starts_with($_SERVER['HTTP_HOST'], 'm.')) {
$path = $_SERVER['REQUEST_URI'];
header('HTTP/1.1 302 Found');
header('Location: https://m.mysite.ru' . $path);
exit;
}
}
В 2015 адаптивный дизайн (один URL, разные стили) был уже правильнее поддомена m.. Но поддомен был быстрее в реализации — и большинство команд выбирали его.