Robots.txt — инструкция поисковым роботам, что можно смотреть на сайте, а что нет. Лежит в корне (/robots.txt), обязателен, читается первым перед любым обходом. Правила: закрываешь служебное (админку, поиск, корзину), оставляешь Allow для CSS/JS/картинок (иначе Google решит, что сайт битый), у Яндекса — Clean-param для UTM (эффективнее, чем Disallow), в конце — Sitemap. Ошибка «Disallow: /» на прод = сайт исчез из индекса за 3-5 дней. Проверять после каждой правки в Вебмастере и GSC.
Robots.txt — первый файл, к которому обращается поисковый робот перед тем как начать обход сайта. Синтаксис простой, но 8 из 10 сайтов, которые я вижу на аудитах, либо не имеют robots.txt вообще, либо имеют его с одной-двумя опасными строчками, которые тихо режут органический трафик. Разбираемся, как правильно.
Что такое robots.txt и зачем он нужен
Это обычный текстовый файл, лежащий по адресу https://твой-сайт.by/robots.txt. Формат — простые директивы, каждая с новой строки. Роботы Google, Яндекса, Bing и прочие читают его при первом заходе на сайт и после этого — раз в 24-48 часов.
Robots.txt не защищает страницы от индексации в чистом виде — он просит бота не ходить туда. Если на страницу с Disallow ведут ссылки с других сайтов, Google может её проиндексировать без содержимого (по анкору внешней ссылки). Для полноценного «не показывай» нужен meta robots noindex в head страницы или заголовок X-Robots-Tag: noindex. Разница важная.
Синтаксис — за 5 минут
User-agent
Указывает, к какому боту применяется правило ниже. Список известных:
User-agent: *— все боты. Дефолт.User-agent: Googlebot— только Google.User-agent: Yandex— все боты Яндекса.User-agent: YandexBot— основной бот Яндекса.User-agent: GPTBot— обходчик OpenAI (для ChatGPT-Training).User-agent: ClaudeBot— обходчик Anthropic.User-agent: PerplexityBot— обходчик Perplexity.
Правила группируются: сначала User-agent:, потом директивы для него. Пустая строка = конец группы, следующий User-agent = новая группа.
Disallow и Allow
Disallow: /admin/— запретить всё, что начинается с/admin/.Disallow: /*?— запретить все URL с параметрами.Disallow:(пустое значение) = разрешить всё. То же, чтоAllow: /.Disallow: /= запретить весь сайт. Классическая катастрофа при переезде с dev на прод.Allow: /admin/reports/public/— открыть подпуть внутри Disallow. Работает.
Sitemap
В конце файла — обязательно:
Sitemap: https://твой-сайт.by/sitemap.xml
Указываешь абсолютным URL. Можно несколько строк, если карт несколько. Помогает роботам найти карту, даже если ты не залил её через GSC/Вебмастер.
Специфика Яндекса: Clean-param и Host
Только для User-agent Яндекса:
Clean-param: utm_source&utm_medium&utm_campaign /— Яндекс сложит все URL с этими параметрами в один канонический URL без параметров. Это лучше, чемDisallow: /*utm_*— не выкидывает страницу, а склеивает варианты.Host: твой-сайт.by— устаревшая директива, с 2018 Яндекс её игнорирует, но многие CMS её всё ещё пишут. Не мешает, но и не помогает.
Google Clean-param не понимает — на его User-agent эта строчка проигнорируется. Для Google параметры лучше настраивать через canonical на самой странице.
Что закрывать в robots.txt
Стандартный список для CMS-сайта:
- Админка и служебные страницы.
/admin/,/wp-admin/,/bitrix/,/user/,/login/. Всё, что не должен видеть пользователь из поиска. - Внутренний поиск.
/search/,/?s=— параметрический поиск создаёт бесконечное количество страниц-дубликатов. Закрываешь наглухо. - Корзина и оформление заказа.
/cart/,/checkout/,/order/— эти страницы бессмысленны в индексе. - Личный кабинет.
/account/,/profile/,/dashboard/. Индексировать нечего, кроме шаблона. - Отправка форм и AJAX-эндпоинты.
/send.php,/api/,/ajax/. Технические URL, ответы 200 у которых — не HTML. - Тестовые и preview-разделы.
/test/,/preview/,/staging/,/*.html.bak. Если что-то ушло в прод по недосмотру — закрываешь до фикса. - Дубликаты по параметрам. Фильтры каталога (
?color=red&size=L), UTM (?utm_source=...), сессионные ID (?sid=...). Google обычно съедает без последствий, Яндекс нервничает — для Яндекса лучшеClean-param. - Файлы бэкапов и мусор.
*.zip,*.sql,*.log,*.bak. Если у тебя такие файлы валяются в корне — закрой в robots и вычисти после.
Что НЕ закрывать. Обязательно проверить
Есть паттерны, которые в 2010-х принято было запрещать, а в 2026 году они обязаны быть открыты:
- CSS-файлы (
*.css,/wp-content/themes/,/bitrix/templates/). Google рендерит страницу как браузер и оценивает удобство. Без CSS страница выглядит как хаос — Google решит, что сайт битый или спам. - JavaScript-файлы (
*.js,/wp-includes/js/). То же самое: без JS половина функционала не работает, оценка страницы уходит вниз. - Изображения (
*.png,*.jpg,*.webp,*.svg). Google-Картинки — отдельный источник трафика. Не показать их роботу = отказаться от него. - Шрифты (
*.woff,*.woff2,*.ttf). Нужны для рендеринга страницы. Закрытие ломает Core Web Vitals — LCP падает.
В классической ошибке типа Disallow: /wp-content/ закрываются и стили, и картинки. Правильно — Disallow: /wp-content/plugins/ + Allow: /wp-content/uploads/ + отдельно Allow: *.css, Allow: *.js.
Готовый пример под сайт услуг на .by/.ru
# Общие правила для всех ботов
User-agent: *
Disallow: /admin/
Disallow: /login/
Disallow: /cart/
Disallow: /checkout/
Disallow: /search/
Disallow: /api/
Disallow: /send.php
Disallow: /preview/
Disallow: /test/
Disallow: /*.sql$
Disallow: /*.bak$
Disallow: /*.log$
# UTM и рекламные параметры — закрываем от общей выдачи
Disallow: /*?utm_
Disallow: /*&utm_
Disallow: /*?gclid=
Disallow: /*?yclid=
Disallow: /*?fbclid=
Disallow: /*?srsltid=
Disallow: /*?gad_source=
# Разрешаем ресурсы для рендеринга
Allow: /*.css$
Allow: /*.js$
Allow: /*.png$
Allow: /*.jpg$
Allow: /*.jpeg$
Allow: /*.webp$
Allow: /*.svg$
Allow: /*.woff$
Allow: /*.woff2$
# Отдельная секция для Яндекса — Clean-param эффективнее Disallow
User-agent: Yandex
Disallow: /admin/
Disallow: /login/
Disallow: /cart/
Disallow: /checkout/
Disallow: /search/
Disallow: /api/
Disallow: /send.php
Disallow: /preview/
Disallow: /test/
Clean-param: utm_source&utm_medium&utm_campaign&utm_term&utm_content /
Clean-param: yclid&gclid&fbclid&srsltid&gad_source /
# LLM-боты — оставляем открытыми (brand-cite в LLM-ответах)
User-agent: GPTBot
Allow: /
User-agent: ChatGPT-User
Allow: /
User-agent: Google-Extended
Allow: /
User-agent: ClaudeBot
Allow: /
User-agent: PerplexityBot
Allow: /
Sitemap: https://твой-сайт.by/sitemap.xml
Это скелет. Подставь свой домен, свои специфические пути, и файл готов. Дальше — тесты.
LLM-боты: закрывать или оставлять?
Спор 2024-2026 годов. Три позиции:
- Закрыть всех LLM-ботов. Мотив: «наш контент используют для обучения без разрешения». Позиция понятна для крупных СМИ и юр.контента. Для малого бизнеса — терять больше, чем защищать.
- Открыть всех. Мотив: попадать в ответы ChatGPT/Perplexity/Claude по своим темам. Brand-cite в LLM — новый источник трафика, который в 2026 уже приносит 2-5% лидов на .by-сайтах.
- Открыть search-ботам, закрыть training-ботам.
Google-Extended= training,Googlebot= поиск. Пускаешь в поиск, не пускаешь в обучающие датасеты. Средняя позиция.
Моя позиция: оставляй открытыми, если ты малый или средний бизнес. Условная упомянутая ссылка на твой сайт в ответе GPT-5 приносит больше пользы, чем защита «интеллектуальной собственности» на страницах услуг. Если ты — портал контента с монетизацией по показам, ситуация обратная.
Типовые косяки, которые убивают трафик
1. Disallow: / на прод
Классика: сайт делали на dev-домене, там robots.txt закрывал весь сайт. При переезде на прод забыли поправить. Через 3-5 дней Google выкидывает всё, что было в индексе, за пару недель отваливаются позиции. Восстановление — 1-2 месяца.
Как избежать: чек-лист перед публикацией + robots.txt в GSC/Вебмастере в первый день после релиза.
2. Disallow: /wp-content/ (или /bitrix/, /tilda/)
Ломает рендеринг страницы у Google. Оценка удобства падает, позиции уходят вниз. Правильно: закрывать только служебные подпапки, оставлять CSS/JS/картинки.
3. Robots.txt в UTF-8 с BOM
Некоторые редакторы (Windows Notepad) сохраняют файл с байтами Byte Order Mark в начале. Робот видит первые невидимые байты, думает, что синтаксис битый, игнорирует первую строку. Проверка: curl -I https://твой-сайт.by/robots.txt → Content-Type должно быть text/plain; charset=utf-8 без «BOM». Пересохранить в редакторе без BOM (VS Code → «UTF-8 без BOM»).
4. Одна общая секция для всех User-agent
Пишут только User-agent: * и всё. Работает — но Яндекс не получает Clean-param, теряется 20-30% чистоты индексации UTM-мусора. Отдельная секция под Яндекс — 5 минут работы, реальный эффект.
5. Sitemap не абсолютным URL
Пишут Sitemap: /sitemap.xml вместо полного URL. Часть роботов не парсит относительный путь. Всегда пиши Sitemap: https://твой-сайт.by/sitemap.xml.
6. Комментарии в robots.txt
Комментарии допустимы (# в начале строки), но многие пишут русские комментарии — а часть роботов, встретив кириллицу, ломается на кодировке. Безопаснее либо латинские, либо без комментариев вовсе. По практике лучше без них — код чище и не создаёт лишних сюрпризов.
7. Кириллические пути в Disallow
Если у тебя URL /услуги/ кириллицей — в robots.txt писать в percent-encoded виде: Disallow: /%D1%83%D1%81%D0%BB%D1%83%D0%B3%D0%B8/. Кириллица напрямую = не работает в половине роботов.
Как проверить, что robots.txt работает
- Открой файл в браузере:
https://твой-сайт.by/robots.txt. Должен отдаваться, HTTP 200, читаемый текст. - GSC → «Инструмент проверки URL». Вставляешь любую страницу — GSC покажет, разрешена она к обходу или нет по текущему robots.txt.
- Яндекс.Вебмастер → «Инструменты» → «Анализ robots.txt». Показывает синтаксические ошибки, позволяет проверить любой URL против правил.
- Screaming Frog. Обходит сайт с учётом robots.txt — сразу видишь, какие страницы закрыты и не индексируются.
- Через 1-2 недели после правок — в GSC → «Индексирование» → «Страницы» → отчёт «Заблокировано в robots.txt». Если там появились нужные страницы — ошибка в robots, чинить.
Частые вопросы
Что делать, если robots.txt отсутствует на сайте?
Сайт индексируется как обычно — просто без ограничений. Не критично, но: (а) в индекс попадут служебные URL, (б) UTM-мусор создаст дубли, (в) в Вебмастере будет замечание. Лучше создать даже самый простой файл с User-agent: * + Sitemap: ....
Влияет ли robots.txt на ранжирование?
Напрямую — нет. Косвенно — да: правильно настроенный убирает мусор из индекса, помогает роботу тратить краул-бюджет на важные страницы, ускоряет индексацию нового контента. Плохо настроенный — прячет CSS/JS и роняет оценку удобства сайта.
Можно ли закрыть отдельные страницы через robots.txt?
Технически — да, Disallow: /url-tocnkoi-stranicy/. Но если на неё ведут ссылки, Google может проиндексировать её без содержимого. Правильнее — meta robots noindex в head самой страницы. Robots.txt = «не ходи», noindex = «не индексируй, даже если пришёл».
Как долго ждать эффекта от изменений в robots.txt?
Google перечитывает robots.txt раз в 24-48 часов, применяет правила на следующем обходе (обычно за 1-3 дня). Яндекс — 3-5 дней. Изменения в индексе — 2-4 недели после того, как робот перестанет заходить на закрытые URL.
Нужен ли отдельный robots.txt для мобильной версии сайта?
Нет, если сайт на responsive-вёрстке (один URL, разные стили). Если mobile-версия на отдельном поддомене (m.твой-сайт.by) — тогда нужен свой robots.txt на этом поддомене. Но mobile-поддомены в 2026 — уходящая практика, Google рекомендует responsive.
Robots.txt — это 30 строчек текста, которые ты пишешь один раз и правишь раз в год. Но если в них ошибка на одной строке (Disallow: /), сайт исчезнет из выдачи за неделю. И наоборот: аккуратные 30 строчек убирают из индекса всё лишнее, позволяют Google краулить только реально ценное, ускоряют индексацию новых страниц. Это самая дешёвая работа в техничке — и самая недооценённая.
Нужен разбор robots.txt на твоём сайте + правки — mostlycorp@gmail.com или форма ниже. Технический аудит с robots.txt + sitemap.xml + микроразметкой — от 150 BYN.