X-Robots-Tag: продвинутое управление индексацией через HTTP
X-Robots-Tag даёт контроль над индексацией там, где meta-robots не работает — PDF, изображения, медиа-файлы. Практические сценарии и nginx-настройки.
X-Robots-Tag — это HTTP-заголовок, который выполняет роль meta-robots, но на уровне сервера. Меньше известен, но критически важен для контроля индексации файлов, к которым meta-теги в принципе не приложить — PDF, изображения, видео, CSV-файлы и любая другая нестрелочная статика.
В этой статье — практические сценарии использования X-Robots-Tag и nginx-настройки на каждый сценарий.
Зачем нужен X-Robots-Tag
Стандартный <meta name="robots" content="noindex"> живёт внутри HTML-документа. Если ресурс — это не HTML (PDF, PNG, MP4, JSON), meta-тег вы туда не положите. А поисковики таких ресурсов индексируют — Google видит ваш PDF и показывает его в результатах поиска по PDF-документам.
X-Robots-Tag решает это, работая на уровне HTTP-заголовков. Сервер при отдаче файла добавляет:
X-Robots-Tag: noindex, nofollow
И поисковик при обходе видит этот заголовок раньше, чем содержимое файла. Считывает инструкцию, не индексирует.
Поддерживаемые значения
X-Robots-Tag принимает все те же директивы, что и meta-robots:
noindex— не добавлять в индексnofollow— не идти по ссылкам внутри ресурсаnoarchive— не сохранять кэш-копиюnosnippet— не показывать сниппет в выдачеnoimageindex— не индексировать изображения на страницеunavailable_after: [date]— не индексировать после датыmax-snippet:[N]— ограничить длину сниппетаmax-image-preview:none/standard/large— управление превью изображенийmax-video-preview:[N]— управление длиной превью видео
Директивы можно комбинировать через запятую.
Сценарии использования
Сценарий 1: PDF-документы в индексе
Распространённая проблема. На сайте есть скачиваемые PDF — прайсы, спецификации, юридические документы. Google их обходит и показывает в выдаче. Пользователи попадают на PDF минуя ваш сайт.
Решение в nginx:
location ~* \.pdf$ {
add_header X-Robots-Tag "noindex, nofollow" always;
}
Если хотите оставить PDF в индексе, но без снипета и превью:
location ~* \.pdf$ {
add_header X-Robots-Tag "nosnippet, noarchive, max-image-preview:none" always;
}
Сценарий 2: Технические JSON / XML
Многие сайты отдают sitemap.xml, feed.xml, manifest.json и подобное. Их не нужно показывать в выдаче — пользователю эти файлы бесполезны.
location ~* \.(json|xml)$ {
add_header X-Robots-Tag "noindex" always;
}
Но осторожно — sitemap.xml именно нужен поисковикам для обнаружения страниц. Заблокировать индексацию sitemap (его не показывать в выдаче) — нормально. Заблокировать обход — нельзя.
Сценарий 3: Превью-картинки и thumbnails
В e-commerce есть thumbnail в карточке товара и большое фото на отдельной странице. Не хочется чтобы thumbnail попадал в Google Images вместо большого фото.
location ~* /(?:thumbnails|previews)/.*\.(jpg|webp|png)$ {
add_header X-Robots-Tag "noimageindex" always;
}
Сценарий 4: Скоро устаревающий контент
Промо-страница акции до конца месяца. После окончания акции содержимое теряет смысл, но удалять страницу нельзя — она в выдаче, на неё ведут ссылки.
location = /promo/halloween-2026.html {
add_header X-Robots-Tag "unavailable_after: 2026-11-01" always;
}
После 1 ноября 2026 страница автоматически уйдёт из индекса. Можно потом обновить контент и снять заголовок — Google снова её проиндексирует.
Сценарий 5: Тестовый и staging-домен
Test-сайт по адресу test.bcorrections.com не должен попасть в индекс никогда. Простой способ:
server {
server_name test.bcorrections.com;
add_header X-Robots-Tag "noindex, nofollow, noarchive" always;
# ...
}
Этот заголовок применится ко всем ресурсам, отдаваемым с тестового домена — HTML, картинкам, JS, CSS. Гарантия что ничего не попадёт в индекс.
Это надёжнее, чем robots.txt с Disallow: / — robots.txt запрещает обход, но если на тестовый сайт стоят ссылки, Google всё равно может попытаться его проиндексировать. X-Robots-Tag на уровне HTTP — более жёсткая директива.
Сценарий 6: Архивные большие разделы
Старый блог, который вы не хотите удалять, но и тратить crawl budget на него не хочется.
location ^~ /archive/ {
add_header X-Robots-Tag "noindex, nofollow" always;
}
noindex, nofollow означает «не индексируйте эти страницы и не идите по ссылкам с них дальше». Поисковик постепенно перестанет тратить crawl budget на этот раздел.
Сравнение с meta-robots
| Когда что использовать | meta-robots | X-Robots-Tag |
|---|---|---|
| HTML-страница, одно правило | ✅ Меньше работы | Можно, но избыточно |
| Управление по типу файла | ❌ Невозможно | ✅ Главный случай |
| Управление по правилу URL | ❌ Невозможно | ✅ Через regex в nginx |
| Управление огромным количеством страниц | ❌ Каждую править | ✅ Один nginx-блок |
| Временное правило (test-сервер) | Требует deploy | ✅ Сервер-настройка |
Часто комбинируют: HTML-страницы — через meta, файлы и регулярные правила — через X-Robots-Tag.
Подводные камни
add_header в nginx сбрасывает наследование
Если в server блоке есть add_header, и в location тоже add_header — заголовки из server-блока не применяются к этому location. Нужно их повторять.
Решение: использовать ключевое слово always:
add_header X-Robots-Tag "noindex" always;
always означает «применять заголовок ко всем ответам, включая ошибки». Это также защищает от наследования сюрпризов.
Заголовок не работает на статике из CDN
Если статика отдаётся через CDN (Cloudflare, BunnyCDN), заголовки из вашего nginx могут не доходить до конечного пользователя — CDN кеширует ответ и не передаёт ваши кастомные заголовки.
Решение: настроить заголовки на уровне CDN, либо через CDN-правила (page rules в Cloudflare), либо через worker-скрипты.
Поисковику нужно обойти страницу, чтобы увидеть заголовок
X-Robots-Tag действует только когда поисковик пытается обойти ресурс. Если этот ресурс заблокирован в robots.txt — поисковик до него вообще не доходит и не видит заголовок. Не комбинируйте Disallow: в robots.txt с X-Robots-Tag — пользы не будет.
Проверка работы
curl -I https://yourdomain.ru/file.pdf | grep -i robots
# Должно показать: X-Robots-Tag: noindex, nofollow
Также Google Search Console → URL Inspection: введите URL ресурса, посмотрите как Google его видит. Если заголовок применился — будет указано «Indexing: not allowed».
Резюме
X-Robots-Tag — мощный инструмент серверной стороны, который покрывает сценарии где meta-robots не работает. Если у вас сайт с PDF, тестовыми поддоменами, архивными разделами, большими каталогами файлов — без X-Robots-Tag не обойтись.
Хотите аудит индексации вашего сайта с разбором что должно и не должно быть в выдаче — напишите нам.