Мета-тег robots — HTML-директива в <head> страницы, которая управляет поведением поисковых роботов на уровне конкретного URL: индексировать страницу или нет, переходить по ссылкам, какой длины и формата показывать сниппет. Без этой директивы Google и Яндекс действуют по умолчанию — сканируют, индексируют, показывают полный сниппет. Изменить это поведение точечно, не затрагивая весь сайт, — задача meta robots.
Из последнего аудита: интернет-магазин строительного ритейла, 4 200 страниц. В robots.txt стоял Disallow: /catalog/filters/, клиент был убеждён, что 1 800 URL фильтров закрыты от индексации. Реальность: все они находились в индексе Google через внешние ссылки конкурентов — без содержимого, с пустыми тайтлами. Disallow не запрещает индексацию. Это разные инструменты для разных задач, и цена этой путаницы считается в потерянном краулинговом бюджете и мусорном индексе.
Что такое мета-тег robots и как он работает
Мета-тег robots — это HTML-директива в разделе <head>, которая сообщает поисковым роботам, что делать с конкретной страницей: индексировать или нет, переходить по ссылкам, какой длины показывать сниппет.
Базовый синтаксис:
<meta name="robots" content="noindex, nofollow">
Атрибут name задаёт адресата. robots — значит «всем поисковикам». Атрибут content содержит директивы через запятую. Тег размещается в <head> — Google технически читает его и из <body>, но стандарт и требование других краулеров однозначны: только в <head>.
Если нужно адресовать директиву конкретному боту:
<meta name="googlebot" content="nosnippet">
<meta name="yandex" content="noindex">
Первый тег скрывает сниппет только в Google. Второй запрещает индексацию только в Яндексе. Это нужно, когда требуется разное поведение в разных поисковиках — например, страница оптимизирована под Яндекс и не должна появляться в Google.
Синтаксис и атрибуты: name, content, user-agent
name="robots" — директива применяется ко всем известным краулерам. Чтобы обратиться к конкретному боту, используйте его реальное user-agent имя:
| User-agent | Поисковик / продукт | Что сканирует |
|---|---|---|
Googlebot | Основной бот для HTML-страниц | |
Googlebot-Image | Изображения | |
Googlebot-Video | Видео | |
Storebot-Google | Страницы товаров для Google Shopping | |
Google-InspectionTool | Инструмент проверки URL в GSC | |
YandexBot | Яндекс | Основной бот |
YandexImages | Яндекс | Изображения |
bingbot | Bing | Основной бот |
facebot | Meta | Социальные превью |
Если в атрибуте name указать конкретный user-agent — директива применится только к нему, остальные будут действовать по общему правилу из <meta name="robots">.
Чем meta robots отличается от robots.txt
robots.txt управляет тем, куда робот ходит; meta robots управляет тем, что он делает после прихода — это принципиально разные инструменты с разными задачами.
robots.txt — файл на сервере, говорящий краулеру: «не сканируй этот URL». Disallow останавливает бота до загрузки страницы. Но это не запрет индексации. Страница может попасть в индекс через внешние ссылки — Google узнает о её существовании и добавит URL без содержимого. Мета-тег в этой ситуации не поможет: бот не прочитает noindex на странице, к которой ему запрещён доступ.
| Параметр | robots.txt | meta robots |
|---|---|---|
| Что контролирует | Доступ краулера к URL (сканирование) | Действия с URL после загрузки |
| Где размещается | Корень домена (/robots.txt) | <head> каждой страницы |
| Масштаб | Группы URL, весь домен | Одна конкретная страница |
| Запрещает индексацию | Нет — только сканирование | Да — через noindex |
| Риск при неверном применении | Страница в индексе через backlinks без содержимого | Нет при правильном синтаксисе |
Правило одно: Disallow экономит краулинговый бюджет. noindex убирает страницу из выдачи. Это разные задачи.
Ещё один нюанс с sitemap.xml: страницы с noindex нужно оставлять в sitemap до момента полной деиндексации. Логика такая — бот должен прийти на страницу, прочитать директиву и обработать её. Если убрать URL из sitemap сразу, краулер посещает страницу реже, деиндексация затягивается.
Чем meta robots отличается от canonical тега
canonical и noindex решают разные проблемы — и их одновременное использование на одной странице даёт результат, который путают даже опытные специалисты.
canonical указывает Google приоритетную версию URL при наличии дублей: «эта страница — дубль, основная вот тут». Это не запрет индексации — это подсказка приоритета. Google может её проигнорировать.
noindex запрещает показ страницы в выдаче. Жёсткая директива, Google выполняет.
Конфликт случается так: на странице А стоит canonical на страницу Б и одновременно noindex. Google следует canonical — и контент страницы А может появиться в выдаче через страницу Б. noindex на странице А от этого не защищает.
| Комбинация | Результат в Google | Намерение SEO-специалиста |
|---|---|---|
noindex + нет canonical | Страница выпадает из индекса | Убрать из выдачи ✓ |
canonical на другую + нет noindex | Google выбирает приоритетный URL, дубль уходит | Управление дублями ✓ |
noindex + canonical на другую | Google может индексировать контент через canonical-страницу | Убрать из выдачи ✗ |
noindex + canonical на себя | Страница не индексируется | Корректно, canonical избыточен |
Практическое правило: не ставьте canonical и noindex одновременно на одну страницу. Если хотите убрать страницу — только noindex. Если управляете дублями — только canonical.
Какой инструмент выбрать: сводная таблица
Это решение принимается до того, как открывать CMS или редактор шаблонов — не в процессе.
| Задача | Инструмент | Почему |
|---|---|---|
| Скрыть страницу из выдачи | noindex в meta robots | Единственный надёжный способ запретить показ в SERP |
| Сэкономить краулинговый бюджет | Disallow в robots.txt | Бот не тратит ресурс на сканирование |
| Закрыть PDF или изображение | X-Robots-Tag | Некуда ставить HTML-тег |
| Управлять дублями | canonical тег | Не запрещает индексацию, указывает приоритет |
| Закрыть раздел сайта массово | noindex через шаблон в CMS | meta robots на типе страниц |
| Скрыть блок из сниппета, не закрывая страницу | data-nosnippet на элементе | Гранулярный контроль без nosnippet на всю страницу |
Все директивы мета-тега robots: 14 значений и когда применять
Мета-тег robots поддерживает 14 директив — большинство SEO-специалистов знают 2–3, теряя инструменты для управления сниппетами, кэшем и видимостью изображений.
| Директива | Функция | Bing | Яндекс | Когда использовать | |
|---|---|---|---|---|---|
index | Разрешить индексацию (по умолчанию) | ✓ | ✓ | ✓ | Явно не нужен |
noindex | Запретить показ в выдаче | ✓ | ✓ | ✓ | Дубли, служебные страницы, thin content |
follow | Переходить по ссылкам (по умолчанию) | ✓ | ✓ | ✓ | Явно не нужен |
nofollow | Не переходить по ссылкам | ✓ | ✓ | ✓ | Страницы без ссылочного веса |
none | Эквивалент noindex + nofollow | ✓ | ✗ | ✓ | Только при отсутствии Bing в приоритетах |
noarchive | Не показывать кэшированную версию | ✓ | ✓ | ✓ | Платный или закрытый контент |
nosnippet | Запретить текстовый и видео-сниппет | ✓ | ✓ | ✓ | Контент с авторскими ограничениями |
max-snippet:[N] | Длина сниппета в символах | ✓ | ✗ | ✗ | Контроль превью в Google |
max-image-preview:[setting] | Размер превью изображения (none/standard/large) | ✓ | ✗ | ✗ | Медиа-сайты, оптимизация для Discover |
max-video-preview:[N] | Длина видео-сниппета в секундах | ✓ | ✗ | ✗ | Видеосайты |
noimageindex | Не индексировать изображения страницы | ✓ | ✓ | ✗ | Защита от кражи изображений |
notranslate | Не предлагать перевод в выдаче | ✓ | ✗ | ✗ | Мультиязычные сайты |
nositelinkssearchbox | Убрать inline-поиск из сайтлинков | ✓ | ✗ | ✗ | Управление SERP-представлением |
indexifembedded | Индексировать iframe-контент при noindex на родителе | ✓ | ✗ | ✗ | Медиасайты и агрегаторы с iframe |
unavailable_after:[date] | noindex с автоматическим таймером (ISO 8601) | ✓ | ✗ | ✗ | Промо-акции, временный контент |
Примеры в коде:
<!-- Закрыть страницу от индексации, сохранив переход по ссылкам -->
<meta name="robots" content="noindex, follow">
<!-- Ограничить длину сниппета до 160 символов -->
<meta name="robots" content="max-snippet:160">
<!-- Снять все ограничения на превью — для Discover и расширенных сниппетов -->
<meta name="robots" content="max-snippet:-1, max-image-preview:large, max-video-preview:-1">
<!-- Индексировать видео в iframe при noindex на родительской странице -->
<meta name="robots" content="noindex, indexifembedded">
<!-- Снять страницу с индексации автоматически после события -->
<meta name="robots" content="unavailable_after: 2025-12-31T23:59:59+03:00">
none — не универсальный синоним noindex, nofollow. Bing его не поддерживает. Если сайт работает на оба поисковика, пишите директивы явно — это 5 секунд, но страхует от необнаруженного расхождения в индексах.
indexifembedded — нишевая, но практически важная для медиасайтов. Кейс: новостной агрегатор встраивает партнёрские видео через iframe, сама страница-роутер закрыта noindex как аффилейт без самостоятельной ценности. С indexifembedded видео появляется в результатах видеопоиска. Без неё — нет. В RU-источниках эту директиву почти не разбирают, а встречается она регулярно.
«Мета-тег robots считывается при каждом обходе страницы. Изменение содержимого тега вступает в силу при следующем краулинге, а не мгновенно.»
— Google Search Central, Robots meta tag specification
Как Google обрабатывает конфликтующие директивы
Когда директивы конфликтуют — Google выбирает наиболее строгую. Это работает и при конфликте между двумя разными тегами на одной странице.
<meta name="robots" content="index">
<meta name="googlebot" content="noindex">
Google применит noindex — строже. Яндекс в аналогичной ситуации выберет разрешающую директиву и проиндексирует страницу. Подробнее о расхождении логик — в разделе про Яндекс.
Директивы для сниппетов: max-snippet, max-image-preview, max-video-preview
Три директивы управляют внешним видом страницы в выдаче, не затрагивая индексацию.
max-snippet:[N] ограничивает длину текстового превью в символах. -1 снимает все ограничения. 0 эквивалентно nosnippet. Актуально для изданий, контролирующих объём отображаемого контента.
max-image-preview:[setting] задаёт допустимый размер превью изображений: none — без превью, standard — стандартный, large — большое. large в паре с изображением шириной от 1200px — одно из условий показа в Google Discover. Для медиасайтов это отдельный трафиковый канал.
max-video-preview:[N] ограничивает длину видео-превью в секундах. -1 — без ограничений.
Если используете Yoast SEO — max-snippet:-1, max-image-preview:large, max-video-preview:-1 уже стоят на каждой странице автоматически. Это подтверждено в официальной функциональной спецификации Yoast. Дублировать вручную не нужно.
X-Robots-Tag: когда HTML-тег не подходит
X-Robots-Tag — HTTP-заголовок сервера, управляющий индексацией любых файлов: HTML, PDF, изображений, видео — без необходимости встраивать тег в разметку.
Выглядит в HTTP-ответе:
HTTP/1.1 200 OK
X-Robots-Tag: noindex
С адресацией конкретному боту:
X-Robots-Tag: googlebot: noindex
X-Robots-Tag: bingbot: noarchive
Сравнение с meta robots:
| Критерий | meta robots | X-Robots-Tag |
|---|---|---|
| Где размещается | HTML <head> | HTTP-заголовок ответа сервера |
| Тип файлов | Только HTML-страницы | Любые: PDF, изображения, видео |
| Масштаб | Одна страница | Группы файлов, всё расширение |
| Доступ без root | Да (через CMS) | Требует доступа к серверу или .htaccess |
| Момент обработки | После загрузки страницы | До загрузки содержимого |
Настройка X-Robots-Tag на Apache и Nginx
Закрыть все PDF-файлы сайта от индексации — три строки в .htaccess (Apache):
<FilesMatch "\.pdf$">
Header set X-Robots-Tag "noindex, nofollow"
</FilesMatch>
Для Nginx аналог в nginx.conf:
location ~* \.pdf$ {
add_header X-Robots-Tag "noindex, nofollow";
}
Закрыть изображения от индексации (защита от кражи фотографий):
location ~* \.(jpg|jpeg|png|gif|webp)$ {
add_header X-Robots-Tag "noimageindex";
}
Проверить, что заголовок отдаётся корректно:
curl -I https://example.com/document.pdf
В ответе ищите строку X-Robots-Tag. Если строки нет — заголовок не задан.
Когда X-Robots-Tag обязателен, а когда достаточно meta robots
Три ситуации, когда X-Robots-Tag — единственный вариант:
- Не-HTML контент: PDF, изображения, видео. Мета-тег физически некуда поставить.
- Директивы на уровне группы файлов: через конфиг сервера закрываете сотни URL одной строкой, не трогая каждый файл.
- Боты, не читающие HTML: часть краулеров обрабатывает только HTTP-заголовки.
Если работаете с HTML-страницами и есть CMS — meta robots проще и надёжнее. Если задача выходит за пределы HTML — X-Robots-Tag.
Meta robots в Яндексе — критические отличия от Google
Яндекс поддерживает те же директивы, что и Google — но при конфликтующих правилах действует противоположно: если одновременно указаны all и noindex, Яндекс выбирает разрешающую директиву и индексирует страницу, тогда как Google применяет запрещающую.
Это официальная позиция, зафиксированная в справке Яндекс.Вебмастера. На практике это источник незаметных расхождений между индексами — написать <meta name="robots" content="noindex, index"> и получить страницу, выпавшую из Google, но оставшейся в Яндексе. Обнаруживается при параллельной сверке GSC и Яндекс.Вебмастера. Чаще всего — неожиданно.
| Параметр | Яндекс | |
|---|---|---|
| Конфликтующие директивы | Применяет наиболее строгую | Применяет разрешающую |
| Собственный user-agent тег | <meta name="googlebot"> | <meta name="yandex"> |
| Инструмент проверки | Google Search Console | Яндекс.Вебмастер |
| Реакция на Disallow + noindex | Страница может быть в индексе | Страница может быть в индексе |
«На RU-рынке критически важно помнить: Яндекс и Google по-разному обрабатывают конфликтующие теги. То, что убирает страницу из Google, может оставить её в Яндексе. Проверяйте оба поисковика при любых изменениях директив.»
Как указать директивы только для Яндекса
У Яндекса есть атрибут name="yandex" — директивы применяются исключительно к YandexBot, не затрагивая Google.
<!-- Закрыть страницу только для Яндекса -->
<meta name="yandex" content="noindex">
<!-- Разрешить Google, закрыть Яндекс -->
<meta name="robots" content="index, follow">
<meta name="yandex" content="noindex">
<!-- Закрыть Google, разрешить Яндекс -->
<meta name="googlebot" content="noindex">
<meta name="robots" content="index, follow">
Третий вариант встречается реже, но он актуален: когда контент оптимизирован под Яндекс и не должен ранжироваться в Google. Корректная реализация — только через раздельные теги, а не через общий <meta name="robots">.
Как настроить meta robots на популярных платформах
Способ внедрения meta robots зависит от платформы: в WordPress это настройка в Yoast, в Bitrix — поле в свойствах страницы, в Tilda — секция HEAD, при прямой работе с HTML — один тег в <head>.
WordPress + Yoast SEO
Yoast добавляет max-snippet:-1, max-image-preview:large, max-video-preview:-1 на каждую страницу автоматически — без noindex эти директивы уже работают. Подтверждено в официальной спецификации плагина; дублировать вручную не нужно.
Закрыть страницу от индексации:
- Откройте страницу в редакторе WordPress.
- Прокрутите вниз до блока Yoast SEO.
- Перейдите на вкладку Advanced.
- В поле Allow search engines to show this Post in search results? выберите No.
Yoast автоматически поставит <meta name="robots" content="noindex, follow">.
Для массового закрытия по типу страниц: Yoast SEO → Search Appearance → Content Types — переключатель закрывает все теги, категории или кастомные таксономии сразу.
Bitrix
В Bitrix meta robots задаётся в свойствах страницы. Путь: Сайт → Структура сайта → [страница] → Свойства → SEO. В поле Robots вводите значение напрямую: noindex, follow или noindex, nofollow.
Если поле не отображается — проверяйте шаблон страницы: в ряде конфигураций Bitrix поле спрятано в настройках компонента. Для массовой настройки через инфоблоки свойство маппируется на meta robots через шаблон — это специфично для каждого проекта, уточняйте у разработчика.
Tilda
В Tilda meta robots задаётся через Настройки сайта → SEO → Дополнительные настройки HEAD-кода. Вставляйте тег целиком:
<meta name="robots" content="noindex, nofollow">
Для конкретной страницы: Страница → Настройки страницы → SEO → Дополнительные мета-теги.
Прямое редактирование HTML
Google читает meta robots и из <body> — но стандартная практика однозначна: только в <head>. Другие краулеры требуют именно этого.
Минимальная корректная разметка:
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="robots" content="noindex, follow">
<title>Заголовок страницы</title>
</head>
<body>
<!-- Контент -->
</body>
</html>
Если нужно управлять разными ботами по-разному — ставьте отдельные теги рядом:
<meta name="robots" content="noindex, follow">
<meta name="googlebot" content="noarchive">
Как проверить meta robots: 4 метода
Четыре способа проверки мета-тега robots различаются по масштабу — от однострочной команды в терминале до полного краулинга сайта; выбор метода зависит от задачи.
Из практики: при аудите после запуска промо-раздела крупного ритейлера Screaming Frog выдал noindex на 340 страницах. Страницы запустили с тестовой конфигурации CMS — директива перешла в прод незаметно. Без краулера прошли бы месяцы до обнаружения по падению трафика.
- Просмотр кода в браузере — Ctrl+U, затем Ctrl+F →
meta name="robots". Подходит для проверки одной страницы вручную. - Curl для X-Robots-Tag — проверяет HTTP-заголовок, который тег в HTML не показывает:
curl -I https://example.com/page/
В ответе ищите X-Robots-Tag. Если строки нет — заголовок не задан.
- Google Search Console, инструмент «Проверка URL» — показывает статус индексации с причиной: «Исключено директивой noindex» с указанием источника (мета-тег или HTTP-заголовок) и датой последнего краулинга.
- Screaming Frog — массовый аудит. Фильтр: Response Codes → 200 → Directives → noindex. Выгружает все страницы с noindex одним списком — именно это показывает расхождения между тем, что должно быть закрыто, и тем, что закрыто фактически.
Проверка в GSC и Яндекс.Вебмастере
В GSC путь: Проверка URL → введите адрес → «Страница не проиндексирована». В блоке «Почему» причина: noindex tag — если это мета-тег; noindex (HTTP header) — если X-Robots-Tag.
В Яндекс.Вебмастере: Инструменты → Проверка ответа сервера — здесь видны HTTP-заголовки, включая X-Robots-Tag. Статус индексации страницы: Индексирование → Страницы в поиске → Исключённые.
Типичные ошибки при работе с meta robots
Большинство критических ошибок с meta robots — не синтаксические, а логические: специалисты знают директивы, но не понимают, как они взаимодействуют с robots.txt, sitemap, canonical и структурированными данными.
Клиент — средний интернет-магазин, 15 000 SKU. После переезда с тестового сервера органика упала на 60% за три недели. Причина: шаблон тестовой среды содержал <meta name="robots" content="noindex, nofollow"> — при деплое его не убрали с шаблона каталога. Все 8 000 страниц категорий и карточек товаров ушли с noindex в прод. Google переобошёл их в течение 10 дней и выбросил из индекса. Ещё три недели — на восстановление после снятия директивы.
«Staging-среда с noindex — это норма. Забытый noindex в проде — это катастрофа. Сделайте проверку meta robots частью чеклиста при каждом деплое.»
Ошибка 1: noindex + Disallow на той же странице
Если страница закрыта через Disallow, Googlebot не загружает HTML и не читает мета-тег. noindex не выполняется. Страница остаётся в индексе через внешние ссылки — без содержимого, с пустым сниппетом.
Решение: либо Disallow (экономия краулинга), либо noindex (реальная деиндексация). Не оба одновременно.
Ошибка 2: content="none" без проверки на Bing
none эквивалентен noindex, nofollow в Google и Яндексе. Bing директиву не поддерживает — страница останется видима в Bing.
Решение: если важна совместимость с Bing — пишите noindex, nofollow явно.
Ошибка 3: Удаление noindex-страниц из sitemap до деиндексации
Чтобы noindex сработал, бот должен прийти на страницу и прочитать директиву. Если убрать URL из sitemap сразу — краулер посещает страницу реже, деиндексация затягивается на месяцы.
Решение: оставлять страницы в sitemap до подтверждения деиндексации в GSC (статус «Не проиндексировано: noindex»). После — убирать.
Ошибка 4: noindex на staging, перешедший в прод
CMS-шаблон тестовой среды содержит noindex. При деплое шаблон копируется без изменений. Через 1–2 недели Google переобходит страницы и выбрасывает из индекса — именно так теряются 60% органики за три недели.
Чеклист для CI/CD-пайплайна: запускайте проверку перед каждым деплоем.
# Найти noindex в шаблонах перед деплоем на прод
grep -r "noindex" ./templates/ --include="*.html" --include="*.php" --include="*.twig"
Если команда вернула результаты — остановить деплой, проверить каждый файл вручную. Дополнительно: прогонять прод через Screaming Frog после каждого крупного релиза.
Ошибка 5: Конфликт structured data и nosnippet
nosnippet запрещает текстовый и видео-сниппет. Но Google может использовать данные из schema.org для формирования расширенных результатов даже при активном nosnippet — потому что это разные механизмы.
nosnippet блокирует текстовое и видео-превью. Rich snippets из структурированных данных он не блокирует.
Конкретно: поля schema.org типа Review (звёзды рейтинга), Product (цена), Event (дата и место), Recipe (время приготовления) рендерятся как rich snippets независимо от nosnippet — они генерируются из structured data, а не из текста страницы. Поля article.description и description действительно не переопределяют директиву. Но рейтинги, цены и даты — переопределяют.
Решение: если нужно полностью исключить блок из выдачи — комбинируйте nosnippet с data-nosnippet на конкретных элементах.
data-nosnippet: гранулярный контроль сниппета без закрытия страницы
data-nosnippet — HTML-атрибут, скрывающий конкретный блок страницы из текстового сниппета Google без запрета индексации страницы целиком.
<div data-nosnippet>
Этот текст не попадёт в сниппет Google,
но страница остаётся полностью в индексе.
</div>
<p>А этот текст Google может использовать для сниппета.</p>
Работает на уровне div, span, section. Полезно для скрытия юридических оговорок, персональных данных, спорных ценовых блоков из превью — когда закрывать страницу целиком избыточно. При ошибке 5 data-nosnippet на <div> с конфликтующим schema-блоком — рабочее точечное решение.
Итоги
- Выбирайте инструмент по задаче, не по привычке:
Disallowэкономит краулинговый бюджет, но не убирает страницу из выдачи.noindexубирает из выдачи, но не экономит краулинг.canonicalуправляет приоритетом дублей, но не запрещает индексацию.X-Robots-Tag— единственный вариант для PDF и изображений. Смешать эти функции — получить расхождения, которые обнаруживаются через месяцы. - Яндекс и Google — разная логика при конфликтах директив: Google берёт строгую, Яндекс — разрешающую. Для RU-рынка это означает регулярную параллельную сверку GSC и Яндекс.Вебмастера при любых изменениях meta robots — особенно после переездов и крупных деплоев.
- Самые дорогостоящие ошибки — логические, не синтаксические: noindex под Disallow (директива не читается), staging в проде (минус 60% органики за три недели), слишком раннее удаление из sitemap (деиндексация растягивается). Добавьте
grep -r "noindex" ./templates/в чеклист каждого деплоя — это занимает 10 секунд и страхует от самой распространённой причины потери трафика.
Прогоните сайт через Screaming Frog: выгрузите все страницы с noindex и сравните со списком исключённых в Search Console. Расхождения есть почти всегда — и часть из них окажется неожиданной.