user@elrise.ru:~
2026-07-2614 min readseotechnical-seorobots-txtsitemaphreflangcore-web-vitalsstructured-dataschema-orgyandexgoogle

Технический 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>-элементы с <xhtml:link rel="alternate" hreflang="…"> Яндексом игнорируется. Для Яндекса языковые версии — только через <link rel="alternate" hreflang> в 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 — фрагмент <head> страницы; для RU-проекта с подзонами
<link rel="alternate" hreflang="ru"        href="https://example.ru/" />
<link rel="alternate" hreflang="ru-BY"     href="https://example.by/" />
<link rel="alternate" hreflang="ru-KZ"     href="https://example.kz/" />
<link rel="alternate" hreflang="ru-UA"     href="https://example.com.ua/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/" />

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

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

TLD       : example.ru         (отдельный домен)
Subdomain : ru.example.com     (поддомен основного домена)
Subfolder : example.com/ru/    (папка основного домена)
ТопологияYandexGoogleКогда выбирать
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):

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

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

Cross-engine hygiene:

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 с 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 года.

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

Откуда это

Эта статья — техническая часть цикла про 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).

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

Обсуждение

Комментарии (0)

Пока никто не комментировал.