Технический SEO для RU-сайтов: robots, sitemap, hreflang, Core Web Vitals и Schema.org

Технический SEO на RU-сайте — это не три таблицы из чек-листа. Это robots.txt с директивой Clean-param, которой нет у Google, sitemap, который Яндекс больше не принимает для языковых версий, hreflang по ISO 3166-2:RU с city-granularity, Core Web Vitals, которые у Google имеют цифры, а у Яндекса — категории, и Schema.org со специфичными для Яндекса расширениями. Ниже — канонические правила 2026 года по каждой из этих осей.

robots.txt: точка входа для обоих роботов, но директивы разные

Файл должен лежать в корне сайта, отвечать HTTP 200 и не превышать 500 КБ — это требование Яндекса и фактический предел Google. Encoding — ASCII: кириллица в Disallow/Allow либо URL-encoded, либо через Punycode для доменов (xn--…). Google чуть лояльнее к UTF-8 в комментариях, но полагаться на это не стоит.

Главное отличие в директивах — Яндекс поддерживает Clean-param, Google нет. Директива говорит Яндекс-роботу, что GET-параметр не меняет контент и не должен индексироваться как отдельный URL. Это инструмент, без которого граф ссылок дробится на дубли:

# partial — фрагмент robots.txt для e-commerce с UGC-метками
User-agent: *
Disallow: /admin/
Disallow: /cart
Allow: /

Clean-param: utm_source&utm_medium&utm_campaign /
Clean-param: ref /
Clean-param: sort /
Sitemap: https://example.ru/sitemap.xml

Google эти Clean-param просто игнорирует — для него дубль-параметры должны закрываться через rel="canonical" на странице или через noindex в мета-теге. Поэтому в RU-проекте закрытие UTM-меток требует двух механизмов: Clean-param для Яндекса, canonical для Google.

Robots meta (name="robots" content="noindex,nofollow") работает у обоих движков одинаково. Google дополнительно понимает data-nosnippet для точечного контроля сниппета, Яндекс — нет.

Sitemap: цифры одинаковые, но Яндекс больше не принимает локали

Протокол един — sitemaps.org 0.9. Оба движка принимают до 50 000 URL на файл и 50 МБ uncompressed, длину URL до 2048 символов, UTF-8, кириллицу как raw, так и URL-encoded. Sitemap index рекомендуется обоими.

Важное расхождение, которое ломает много RU-проектов: Яндекс с 2024-2025 больше не поддерживает sitemap для языковых версий. Разметка RU/EN/DE через <loc>-элементы с Яндексом игнорируется. Для Яндекса языковые версии — только через в HTML каждой страницы. Google принимает оба канала.

lastmod и priority Google трактует как hints (может учитывать, может проигнорировать). Яндекс читает их буквальнее — lastmod влияет на краулинговый бюджет.

Для больших RU-сайтов канонический паттерн — sitemap index, который линкует на обычные sitemap-файлы по разделам (товары отдельно, статьи отдельно, категории отдельно). Это не специфичное для Яндекса правило, это протокол.

hreflang: RU-подзоны с city-level granularity

Каноническая RU-локализация строится на ISO 639-1 для языка (одна буква ru) и ISO 3166-1 Alpha-2 для региона (RU, BY, KZ, UA). Яндекс дополнительно поддерживает ISO 3166-2:RU для city-level гранулярности — ru-MOW (Москва), ru-SPE (Санкт-Петербург), ru-NVS (Новосибирск). Google эту гранулярность принимает, но не делает на ней ранжирования.

Разметка hreflang выглядит так:

// partial — фрагмент страницы; для RU-проекта с подзонами






Bilateral confirmation — обязательное требование обеих систем: если на example.ru/ стоит hreflang на example.by/, то и на example.by/ должен стоять обратный hreflang на example.ru/. Без парности разметка игнорируется.

Выбор топологии под RU-проект:

TLD : example.ru (отдельный домен)
Subdomain : ru.example.com (поддомен основного домена)
Subfolder : example.com/ru/ (папка основного домена)

Топология | Yandex | Google | Когда выбирать
example.ru (ccTLD) | Native RU SERP, явный геотаргетинг | Native RU через геотаргетинг | .ru / .рф для коммерции, региональные ccTLD для локального рынка
ru.example.com (subdomain) | Per-locale через Вебмастер | Per-locale через Search Console | Информационный контент под локальный рынок без отдельного юрлица
example.com/ru/ (subfolder) | Через hreflang + Вебмастер | Через hreflang + Search Console | Один сайт, многоязычный, без отдельных сертификатов

Для .рф — это кириллический ccTLD, Яндекс трактует его как native RU и исторически даёт bias к RU-SERP, Google обрабатывает как обычный ccTLD.

Core Web Vitals: где у Google цифры, у Яндекса — категории

Google публикует фиксированные пороги (проверено 2025-12-18):

LCP (Largest Contentful Paint): < 2.5s

INP (Interaction to Next Paint): < 200ms

CLS (Cumulative Layout Shift): < 0.1

Это 75-й перцентиль реальных пользователей, а не синтетический тест. Метрика собирается через Chrome User Experience Report (CrUX) и доступна в Search Console → Core Web Vitals. Попадание в «good» влияет на ранжирование в Google и на «good page experience» group, но не отменяет необходимости качественного контента.

Яндекс не публикует числовых порогов. В Вебмастере выставляются категории «Скорость» и «Удобство», которые заполняются по эвристике VIFL/SIM (внутренние метрики) плюс поведенческие факторы после рендера. Попадание в «зелёную» категорию — рабочая цель, но прямой формулы перевода Google-метрик в Яндекс-категории нет.

Cross-engine hygiene:

HTTPS + HSTS для коммерции (без этого ни Google, ни Яндекс не дадут нормального ранжирования в e-commerce).

Mobile-friendly baseline (responsive design или dynamic serving).

Cookie banners в соответствии с 152-ФЗ для RU-аудитории.

JavaScript rendering: opt-in у Яндекса, всегда у Google

Яндекс управляет рендерингом JS в Вебмастере → Индексирование → Рендеринг JavaScript:

At the bot's discretion (по умолчанию)
Allow (всегда рендерить)
Disallow (никогда не рендерить)

SSR или pre-rendering — повод переключить в Disallow, чтобы не расходовать серверные ресурсы Яндекса впустую и не замедлять индексацию. Для client-only SPA оставляют At the bot's discretion или переключают в Allow.

Яндекс-специфический протокол YandexRotorSettings — это waiter-сигнал для delayed-load JS-страниц:

// partial — фрагмент; ожидание отложенной загрузки контента для Яндекс-бота
window.YandexRotorSettings = {
WaiterEnabled: true,
IsLoaded: true,
IsError: false,
FailOnTimeout: false,
NoJsRedirectsToMain: false,
};

Google такого протокола не имеет — у него evergreen Chromium с implicit waits. Оптимизация под YandexRotor имеет смысл только для Яндекса.

Structured data: Schema.org для RU

Schema.org работает на обоих движках, но с разной поверхностью расширенных сниппетов. Канонические типы для RU-сайта:

Article / NewsArticle / BlogPosting

Google Search Central требует для Top Stories Carousel: author (Person/Organization) с author.name и author.url, datePublished и dateModified (ISO 8601 с timezone), headline, image (URL-массив, ≥50 000 px суммарно, aspect 16:9 / 4:3 / 1:1). Яндекс читает ту же разметку и использует для собственного расширения «Быстрый ответ».

BreadcrumbList

BreadcrumbList с ListItem элементами (position, name, item). Оба движка рендерят SERP-хлебные крошки из этой разметки.

Organization со специфичным для Яндекса sameAs

Яндекс рекомендует в sameAs указывать не только стандартные соцсети, но и VK, OK, Telegram — это улучшает трастовость для RU-сегмента:

// partial — фрагмент JSON-LD для Organization; RU-specific sameAs
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Example LLC",
"url": "https://example.ru/",
"logo": "https://example.ru/logo.png",
"sameAs": [
"https://vk.com/example_official",
"https://ok.ru/example",
"https://t.me/example_official",
"https://www.youtube.com/@example"
],
"contactPoint": [{
"@type": "ContactPoint",
"telephone": "+7-495-123-45-67",
"contactType": "customer service",
"areaServed": "RU",
"availableLanguage": ["Russian"]
}]
}

Google принимает sameAs с Wikidata / официальными профилями, но для RU-сегмента VK/OK/Telegram важнее, чем Wikipedia-ссылки.

LocalBusiness с RU-адресацией

LocalBusiness требует address (PostalAddress с addressLocality и addressRegion по ISO 3166-2:RU), geo (GeoCoordinates), openingHoursSpecification, telephone в +7 E.164. Для Яндекса критически важен geo — без него Яндекс.Карты не подтягивают организацию.

FAQPage

Google в 2023 году сильно сузил eligibility для FAQ-расширенного сниппета (в основном снят с SERP), но разметка остаётся полезной для AI-citation candidate pages — генеративный SERP и Google AI Overviews подтягивают структурированный FAQ-текст. Яндекс сохраняет полноценный расширенный сниппет для FAQ.

Review / AggregateRating

Google в октябре 2023 ввёл ограничения на self-serve отзывы — Review разметка собственного сайта больше не показывается в виде review snippet для first-party. Яндекс этого ограничения не имеет и продолжает использовать AggregateRating в коммерческих SERP.

Mobile-first и Turbo: что ушло

Mobile-first indexing: Google полностью перешёл на MFI для всех сайтов к 2024 году. Яндекс держит mobile-friendly как вторичный сигнал — desktop-краул сохранён как fallback, Вебмастер всё ещё показывает отдельный «Mobile-friendly» toggle.

Турбо-страницы (Turbo) Яндекса официально закрыты в конце 2024 — начале 2025. Новые сайты не должны их внедрять. Старые реализации — cleanup debt: Турбо-страницы не индексируются как обычные, ломают аналитику, конфликтуют с mobile-first логикой. Наличие Turbo в проекте — технический долг, не фича.

AMP сохраняется только для новостных издателей (Top Stories). Для коммерции и контент-сайтов AMP мёртв с 2023 года.

Когда это не работает

SPA без SSR для RU-сайта в e-commerce — At the bot's discretion у Яндекса не гарантирует рендеринг, а без рендера контент не индексируется. SPA с товарами без SSR или pre-rendering не попадает в SERP.

hreflang на ccTLD без контент-различий — Google рассматривает это как «манипуляцию геотаргетингом», если страницы example.ru и example.com/ru/ идентичны по контенту. Каждая локаль должна иметь свою цену, адрес, правила — не только переключатель языка.

JSON-LD без видимого контента — если разметка обещает рейтинг 4.8, а на странице отзывов нет, поисковик применяет manual action. Schema.org работает только в паре с реальным контентом.

Sitemap index без файлов — sitemap index, ссылающийся на 404-е sitemap.xml, не штрафуется прямо, но девальвирует доверие crawler-а к сайту. Проверка через Яндекс.Вебмастер → Файлы Sitemap и Search Console → Sitemap.

E-commerce на JS-фреймворке без Schema.org — без Product + Offer теряется Product rich result в обоих движках. На 10 000 SKU без автоматической генерации JSON-LD это много потерянного SERP-пространства.

Откуда это

Эта статья — техническая часть цикла про RU-SEO: Title и Meta Description в RU и EN, On-page структура: H1, заголовки, анкоры, alt-text, этот материал, и завершающая аналитика Яндекс vs Google в RU: 18 деталей, которые реально отличаются. Все цифры и директивы взяты из документации Яндекс.Вебмастера, Google Search Central, sitemaps.org и Schema.org. Проверка источников: 2025-12-18 по Core Web Vitals (обновление Google), 2026-07-19 по всему остальному.

Дисклеймер

Это сводный разбор технического SEO для RU-сайтов на 2026 год, не «полный чек-лист на все случаи жизни». Нет исчерпывающего покрытия Schema.org-типов (только основные для RU), нет разбора платной выдачи, нет JS-фреймворк-specific рекомендаций. Все директивы и пороги — по первоисточникам; поведение поисковиков меняется от апдейта к апдейту, поэтому проверяйте даты рядом с каждой ссылкой. AI-assisted подготовка по умолчанию (disclosure: ai-assisted-yes).

Первоисточники

Яндекс.Вебмастер — Using robots.txt: https://yandex.com/support/webmaster/en/controlling-robot/robots-txt

Яндекс.Вебмастер — Sitemap file: https://yandex.com/support/webmaster/en/controlling-robot/sitemap

Яндекс.Вебмастер — Indexing with JavaScript (β): https://yandex.com/support/webmaster/en/yandex-indexing/rendering

Яндекс.Вебмастер — Localized pages (hreflang): https://yandex.com/support/webmaster/en/yandex-indexing/locale-pages

Google Search Central — Core Web Vitals (RU): https://developers.google.com/search/docs/appearance/core-web-vitals?hl=ru

Google Search Central — Mobile-first indexing: https://developers.google.com/search/docs/crawling-indexing/mobile/mobile-sites-mobile-first-indexing?hl=ru

Google Search Central — Multiregional / multilingual (RU): https://developers.google.com/search/docs/specialty/international?hl=ru

Google Search Central — Structured Data / Article (RU): https://developers.google.com/search/docs/appearance/structured-data/article?hl=ru

Google Search Central — Spam policies (RU): https://developers.google.com/search/docs/essentials/spam-policies?hl=ru

Schema.org Article: https://schema.org/Article

Sitemaps.org protocol: https://www.sitemaps.org/protocol.html

ISO 3166-2:RU subdivision codes: https://en.wikipedia.org/wiki/ISO_3166-2:RU