Что такое 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 | Некоторые роботы трактуют это как «правил нет, разрешено всё», другие — наоборот |
Такую ошибку легко пропустить: сайт продолжает нормально открываться в браузере, вся вёрстка на месте, ничего визуально не сломано — а трафик просто медленно, но верно уходит в ноль в течение нескольких недель, пока страницы одна за другой выпадают из индекса. Поэтому после любого релиза или переезда сайта стоит в первую очередь проверять именно 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 только запрещает роботу заходить на страницу, но не удаляет уже проиндексированную страницу. Для удаления нужен meta-тег noindex или инструмент удаления URL в вебмастере.
Формально нет — при отсутствии файла робот считает, что обходить можно всё. Но на практике файл нужен почти всегда: он закрывает служебные разделы и указывает путь к sitemap.
После каждого крупного изменения сайта — смены CMS, дизайна, миграции на новый домен — и раз в 1-2 месяца в рамках регулярного технического аудита.
Специфичная для Яндекса директива, которая сообщает роботу, что определённые GET-параметры в URL (например, UTM-метки) не создают новый уникальный контент и их можно игнорировать при индексации.
Да, можно задать разные блоки правил через разные значения User-agent в одном и том же файле — это стандартная и рабочая практика.
Добавьте директиву вида Disallow: /*.pdf$ в блок User-agent: * — символ $ означает, что путь должен заканчиваться именно так, а не содержать это сочетание где-то в середине адреса.
Да — пропишите отдельный блок с User-agent: Yandex или User-agent: Googlebot вместо общего User-agent: * и укажите там свои директивы, если логика обхода для этих роботов должна отличаться.
Внедряйте нейросети в маркетинг вместе с нами
В комьюнити 400+ маркетологов делятся кейсами и туториалами по Claude Code, Яндекс.Директ, автоматизации и другим инструментам.
Вступить бесплатно