robots.txt: зачем нужен и как настроить | AI-Mrkt
AI
AI Marketing Community
Вступить бесплатно
Главная/Блог/SEO
SEO · 9 мин чтения

robots.txt: зачем нужен и как правильно настроить

robots.txt — это первый файл, который поисковый робот запрашивает при заходе на сайт, и одна ошибка в нём способна случайно закрыть от индексации весь сайт целиком. Разбираем синтаксис, рабочие примеры и типичные ошибки настройки — с готовыми шаблонами для разных типов сайтов.

Что такое robots.txt и как его читает поисковик

robots.txt — это простой текстовый файл в корне сайта (доступен по адресу вида домен.ru/robots.txt), который сообщает поисковым роботам, какие разделы сайта можно обходить, а какие — нет. Это не жёсткий запрет для всех программ в интернете, а рекомендация для «вежливых» роботов — крупные поисковики вроде Яндекса и Google её соблюдают, но нужно понимать, что robots.txt не защищает данные от посторонних глаз, а только управляет краулингом.

Файл проверяется роботом при каждом заходе на сайт и влияет на индексацию сайта напрямую: если важный раздел случайно попал под Disallow, робот перестанет его обходить, и со временем страницы могут выпасть из индекса даже без вашего явного намерения их скрывать.

Важно понимать разницу между «запретом обхода» и «запретом индексации» — это разные вещи, хотя новички в SEO часто путают их между собой. robots.txt не гарантирует, что страница не появится в индексе вовсе: если на закрытую страницу ведут внешние ссылки, поисковик иногда всё равно добавляет её в базу, но без сниппета — просто с пометкой «описание страницы недоступно из-за ограничений в robots.txt». Для полного исключения страницы из индекса нужен именно meta-тег noindex, а не запись в robots.txt.

Файл должен находиться строго в корне сайта — https://example.ru/robots.txt, а не в подпапке. Для сайтов с поддоменами (например, отдельный m.example.ru для мобильной версии или blog.example.ru для блога) каждому поддомену нужен собственный robots.txt, потому что с точки зрения краулинга поддомен считается отдельным сайтом.

Регистр символов в путях имеет значение: Disallow: /Admin/ и Disallow: /admin/ — для большинства серверных конфигураций это разные пути, и опечатка в регистре может привести к тому, что реальный раздел администрирования сайта останется незакрытым, хотя в файле формально прописано правило, которое выглядит похожим на нужное.

Директива User-agent: * применяется ко всем роботам, для которых явно не прописан отдельный, более специфичный блок правил ниже по файлу. Это значит, что можно задать общие правила для всех роботов и отдельно уточнить поведение конкретно для Яндекса или Google, если нужна разная логика — например, разрешить одному из них индексировать раздел, который по каким-то причинам не нужен в другом поисковике.

Синтаксис: директивы User-agent, Disallow, Allow, Sitemap

User-agent: *
Disallow: /admin/
Disallow: /cart/
Disallow: /search/
Allow: /wp-content/uploads/

User-agent: Yandex
Disallow: /admin/
Clean-param: utm_source&utm_medium&utm_campaign /

Sitemap: https://example.ru/sitemap.xml

User-agent указывает, для какого робота действует блок правил ("*" — для всех). Disallow закрывает раздел от обхода, Allow — точечно разрешает подраздел внутри уже закрытого. Директива Clean-param специфична для Яндекса и позволяет сообщить роботу, что определённые GET-параметры (например, UTM-метки) не создают новую страницу и их можно игнорировать при обходе. Строка Sitemap указывает роботу путь к карте сайта — это можно сделать и через robots.txt, и напрямую в панели вебмастера.

Правила в файле читаются сверху вниз, и для каждого URL действует наиболее специфичное совпадающее правило, а не первое встреченное. Например, если сначала стоит Disallow: /catalog/, а ниже Allow: /catalog/tovar-123, робот всё равно разрешит доступ именно к товару 123, потому что это правило точнее (длиннее по совпадению пути), чем общий запрет каталога. Эта деталь синтаксиса — частый источник ошибок у тех, кто настраивает файл вручную без проверки через инструмент анализа.

Примеры robots.txt для разных типов сайтов

# Для блога / контентного сайта
User-agent: *
Disallow: /wp-admin/
Disallow: /?s=
Allow: /wp-admin/admin-ajax.php
Sitemap: https://example.ru/sitemap.xml

# Для интернет-магазина
User-agent: *
Disallow: /cart/
Disallow: /checkout/
Disallow: /*?sort=
Disallow: /*?filter=
Allow: /catalog/
Sitemap: https://example.ru/sitemap.xml

# Для одностраничника (лендинга)
User-agent: *
Disallow:
Sitemap: https://example.ru/sitemap.xml

Для лендинга закрывать обычно нечего — пустая директива Disallow означает «разрешено всё». Для интернет-магазина критично закрыть служебные разделы (корзину, чекаут) и страницы с параметрами сортировки/фильтрации, которые создают тысячи технических дублей одного и того же каталога.

Для блога отдельно стоит закрыть страницы внутреннего поиска по сайту (обычно доступны через параметр вида /?s=запрос) — они генерируются динамически под любой введённый пользователем текст и в индексе представляют собой бесконечное число малоценных, часто дублирующихся по смыслу страниц, которые только размывают краулинговый бюджет без пользы для трафика.

Частые ошибки в robots.txt

ОшибкаПоследствие
Disallow: / оставлен после разработки сайтаВесь сайт закрыт от индексации
Закрыт раздел с CSS/JS-файламиGoogle не может корректно отрисовать страницу для оценки
Нет директивы SitemapРобот дольше находит новые страницы
Правила противоречат друг другу (Disallow и Allow пересекаются)Непредсказуемое поведение робота
Файл отдаёт код 404 вместо 200Некоторые роботы трактуют это как «правил нет, разрешено всё», другие — наоборот
ВажноСамая опасная и при этом самая частая ошибка — забытая строка "Disallow: /", которая осталась после тестового или разрабатываемого сайта и случайно попала в продакшн-версию после релиза.

Такую ошибку легко пропустить: сайт продолжает нормально открываться в браузере, вся вёрстка на месте, ничего визуально не сломано — а трафик просто медленно, но верно уходит в ноль в течение нескольких недель, пока страницы одна за другой выпадают из индекса. Поэтому после любого релиза или переезда сайта стоит в первую очередь проверять именно robots.txt, а не полагаться на визуальный осмотр страниц.

robots.txt vs meta robots vs canonical

Три инструмента часто путают, хотя решают разные задачи. robots.txt управляет тем, будет ли робот вообще заходить на страницу и скачивать её. Meta-тег robots (прописывается в <head> конкретной страницы, см. статью про мета-теги) разрешает роботу зайти на страницу, но запрещает добавлять её в индекс или переходить по ссылкам с неё. А canonical не запрещает ничего — он говорит, какую версию страницы среди дублей считать основной.

Частая ошибка — пытаться убрать страницу из индекса через robots.txt. Это не сработает: если страница уже проиндексирована и на неё есть внешние ссылки, закрытие в robots.txt только помешает роботу зайти и увидеть, что там стоит noindex, — страница может остаться в индексе без сниппета («страница заблокирована robots.txt»). Для удаления страницы из индекса нужен именно meta robots noindex, а не запрет в robots.txt.

Ещё одна тонкость: если страница закрыта через meta robots noindex, но при этом заблокирована в robots.txt, робот вообще не сможет зайти на неё и прочитать этот тег — а значит, не узнает, что страницу нужно исключить из индекса. На практике это означает, что для гарантированного удаления страницы правильный порядок действий — сначала разрешить обход в robots.txt, дождаться, пока робот прочитает noindex и уберёт страницу из базы, и только потом при желании закрыть раздел от обхода полностью.

Как проверить robots.txt

И Яндекс.Вебмастер, и Google Search Console предоставляют инструмент анализа robots.txt: можно вставить конкретный URL и проверить, разрешён он для обхода или заблокирован тем или иным правилом. Это особенно полезно после любых правок файла — визуально безобидное изменение синтаксиса иногда меняет логику правил непредсказуемым образом.

Помимо инструментов анализа в панелях вебмастеров, полезно периодически просто открывать файл в браузере по прямому адресу и перечитывать его целиком — при частых правках (особенно если файл редактируют несколько разных людей в команде) в нём накапливаются устаревшие или противоречащие друг другу строки, которые никто не удаляет просто потому, что «а вдруг это для чего-то нужно».

Как закрыть от индексации конкретные страницы и типы файлов

Кроме служебных разделов вроде админки и корзины, часто нужно закрыть конкретные типы страниц или файлов — например, документы, страницы печати или результаты внутреннего поиска. Примеры директив для типичных случаев:

# Закрыть PDF и DOC файлы от индексации
User-agent: *
Disallow: /*.pdf$
Disallow: /*.doc$

# Закрыть страницы с параметром печати
Disallow: /*?print=

# Закрыть результаты внутреннего поиска
Disallow: /search/
Disallow: /*?s=

# Закрыть страницы пагинации, оставив первую
Disallow: /catalog/page/
Allow: /catalog/page/1/

Символ "$" в конце правила означает «строго на этом месте заканчивается путь» — без него запись Disallow: /*.pdf закроет и адреса вида /file.pdf-download/, где на самом деле нет отдельного PDF-файла для скачивания. Символ "*" — это любая последовательность символов, включая пустую.

Частый вопрос — можно ли запретить индексацию только для одного поисковика, оставив доступ другому. Да, для этого прописывается отдельный блок с конкретным User-agent (Yandex или Googlebot) вместо общего "*" — так делают, если, например, нужно временно закрыть тестовую версию раздела от Google, но оставить видимой для внутренних проверок через Яндекс.

Чек-лист настройки robots.txt

1. Файл доступен по адресу /robots.txt и отдаёт код 200
2. Нет случайного "Disallow: /" на продакшн-версии
3. Закрыты только служебные разделы (админка, корзина, поиск, фильтры)
4. Не закрыты CSS/JS, нужные для корректного рендера страницы
5. Указана директива Sitemap с актуальным адресом
6. Проверка через инструмент анализа robots.txt в вебмастере
7. Настроен Clean-param для UTM и других некритичных параметров (Яндекс)

Частые вопросы

Может ли robots.txt удалить страницу из поиска?

Нет. robots.txt только запрещает роботу заходить на страницу, но не удаляет уже проиндексированную страницу. Для удаления нужен meta-тег noindex или инструмент удаления URL в вебмастере.

Обязательно ли иметь robots.txt на сайте?

Формально нет — при отсутствии файла робот считает, что обходить можно всё. Но на практике файл нужен почти всегда: он закрывает служебные разделы и указывает путь к sitemap.

Как часто нужно проверять robots.txt?

После каждого крупного изменения сайта — смены CMS, дизайна, миграции на новый домен — и раз в 1-2 месяца в рамках регулярного технического аудита.

Что такое директива Clean-param?

Специфичная для Яндекса директива, которая сообщает роботу, что определённые GET-параметры в URL (например, UTM-метки) не создают новый уникальный контент и их можно игнорировать при индексации.

Разные robots.txt для Яндекса и Google — это нормально?

Да, можно задать разные блоки правил через разные значения User-agent в одном и том же файле — это стандартная и рабочая практика.

Как закрыть PDF-файлы от индексации через robots.txt?

Добавьте директиву вида Disallow: /*.pdf$ в блок User-agent: * — символ $ означает, что путь должен заканчиваться именно так, а не содержать это сочетание где-то в середине адреса.

Можно ли настроить robots.txt отдельно под Яндекс и Google?

Да — пропишите отдельный блок с User-agent: Yandex или User-agent: Googlebot вместо общего User-agent: * и укажите там свои директивы, если логика обхода для этих роботов должна отличаться.

Внедряйте нейросети в маркетинг вместе с нами

В комьюнити 400+ маркетологов делятся кейсами и туториалами по Claude Code, Яндекс.Директ, автоматизации и другим инструментам.

Вступить бесплатно

Читайте дальше