Robots.txt — это первый файл, который ищут поисковые роботы при посещении сайта. Я работаю с ним уже больше 10 лет, и честно говоря, видел столько ошибок в его настройке, что хватило бы на отдельную книгу ужасов.
Что такое robots.txt и зачем он нужен
Robots.txt — это текстовый файл, который лежит в корне сайта и указывает поисковым роботам, какие страницы индексировать можно, а какие — нельзя. Грубо говоря, это вежливая просьба к поисковикам, а не строгое правило.
На моей практике был случай с интернет-магазином, где неправильно настроенный robots.txt заблокировал индексацию всех товаров. Трафик упал на 80% за месяц. А всё из-за одной лишней строчки в файле.
Но robots.txt нужен не только для блокировки. Я использую его для:
- Указания пути к sitemap.xml
- Блокировки служебных разделов (админки, корзины, поиска)
- Управления нагрузкой на сервер от ботов
- Скрытия дублей и технических страниц
Где расположить robots.txt
Файл robots.txt должен лежать строго в корне домена. То есть по адресу example.com/robots.txt. Никаких поддиректорий, никаких вариантов.
У меня был клиент, который создал robots.txt в папке /seo/robots.txt и удивлялся, почему роботы его не видят. А всё потому, что поисковики ищут файл только в корне.
Права доступа к файлу должны быть 644. Проверить это можно через FTP или файловый менеджер хостинга:
chmod 644 robots.txt
Кодировка файла — обязательно UTF-8. Иначе кириллица в комментариях может отображаться некорректно. Я всегда проверяю это в редакторе перед загрузкой на сервер.
Базовая структура robots.txt
Структура robots.txt довольно простая. Основные директивы:
- User-agent — указывает, к какому роботу применяются правила
- Disallow — запрещает индексацию
- Allow — разрешает индексацию (используется для исключений)
- Sitemap — указывает путь к карте сайта
- Crawl-delay — задаёт задержку между запросами бота
Вот базовый пример robots.txt, который я использую для большинства проектов:
User-agent: *
Disallow: /admin/
Disallow: /cgi-bin/
Disallow: /tmp/
Disallow: /search?
Disallow: /*?print=Y
Disallow: /*?PAGEN_
Allow: /
Sitemap: https://example.com/sitemap.xml
Каждая группа правил начинается с User-agent и заканчивается пустой строкой. Это важно — без пустой строки поисковики могут неправильно интерпретировать правила.
Настройка robots.txt для разных CMS
Robots.txt для WordPress
Для WordPress я обычно использую такой robots.txt:
User-agent: *
Disallow: /wp-admin/
Disallow: /wp-includes/
Disallow: /wp-content/plugins/
Disallow: /wp-content/themes/
Disallow: /wp-content/cache/
Disallow: /wp-json/
Disallow: /xmlrpc.php
Disallow: /*?s=
Disallow: /*?p=
Disallow: /author/
Disallow: /tag/
Allow: /wp-content/uploads/
User-agent: Yandex
Disallow: /wp-admin/
Disallow: /wp-includes/
Disallow: /*?s=
Crawl-delay: 1
Sitemap: https://example.com/sitemap.xml
Особенность WordPress в том, что он генерирует много служебных URL. Я всегда блокирую поиск (/?s=), страницы авторов и тегов, если они не нужны для SEO. При оптимизации WordPress правильный robots.txt может существенно снизить нагрузку на сервер.
Robots.txt для Битрикс
В Битрикс ситуация сложнее из-за большого количества служебных файлов:
User-agent: *
Disallow: /bitrix/
Disallow: /upload/tmp/
Disallow: /personal/
Disallow: /auth/
Disallow: /search/
Disallow: /*?action=
Disallow: /*?PAGEN_
Disallow: /*?print=Y
Disallow: /*?SHOWALL_
Disallow: /*?clear_cache=Y
Allow: /bitrix/images/
Allow: /bitrix/templates/
Allow: /upload/
User-agent: Yandex
Crawl-delay: 2
Sitemap: https://example.com/sitemap.xml
В Битрикс я всегда блокирую папку /bitrix/ целиком, но делаю исключения для изображений и шаблонов. Это критически важно, иначе CSS и JS файлы могут не индексироваться.
Правильное блокирование страниц
Блокировка страниц — это искусство. Нужно найти баланс между защитой от индексации мусора и доступностью важного контента.
Что обязательно блокировать
На основе моего опыта, вот список того, что нужно блокировать в 99% случаев:
- Админ-панели (/admin/, /wp-admin/, /bitrix/)
- Корзины и оформление заказов (/cart/, /checkout/)
- Поиск по сайту (/search?, /?s=)
- Пагинация (/page/, ?PAGEN_)
- Версии для печати (?print=Y)
- Временные файлы (/tmp/, /cache/)
Использование wildcards
В robots.txt можно использовать символы подстановки:
- * — любое количество любых символов
- $ — конец строки
Например, чтобы заблокировать все PDF файлы:
User-agent: *
Disallow: /*.pdf$
А чтобы заблокировать все параметры с сортировкой:
User-agent: *
Disallow: /*?sort=
Честно говоря, с wildcards нужно быть осторожным. Я однажды заблокировал все изображения на сайте, написав Disallow: /*.jpg — забыл про $, и в итоге заблокировались все страницы, содержащие .jpg в URL.
Настройка для разных поисковых роботов
Разные поисковые роботы ведут себя по-разному. Я всегда настраиваю отдельные правила для основных ботов.
Настройка для Googlebot
Google довольно лояльно относится к сайтам, но не любит дублированный контент:
User-agent: Googlebot
Disallow: /search?
Disallow: /*?utm_
Disallow: /*?ref=
Disallow: /print/
Crawl-delay: 1
Настройка для Яндекса
Яндекс более агрессивен в сканировании. У меня был сайт, где Яндексбот создавал нагрузку в 200+ запросов в секунду:
User-agent: Yandex
Disallow: /search?
Disallow: /*?sort=
Disallow: /*?filter=
Crawl-delay: 3
User-agent: YandexBot
Crawl-delay: 3
User-agent: YandexImages
Disallow: /private/
Allow: /
Для Яндекса я всегда ставлю Crawl-delay не менее 2-3 секунд. Иначе сервер может не выдержать нагрузки.
Блокировка агрессивных ботов
Некоторые боты слишком агрессивны. Я блокирую их полностью:
User-agent: AhrefsBot
Disallow: /
User-agent: MJ12bot
Disallow: /
User-agent: SemrushBot
Disallow: /
Эти боты часто создают большую нагрузку на сервер, а пользы от них мало.
Указание sitemap.xml
В robots.txt обязательно нужно указывать путь к карте сайта. Это помогает поисковикам быстрее находить новые страницы.
Sitemap: https://example.com/sitemap.xml
Sitemap: https://example.com/sitemap-images.xml
Sitemap: https://example.com/sitemap-news.xml
Можно указать несколько sitemap файлов. Я обычно разделяю их по типам контента — отдельно для страниц, изображений и новостей.
Важно использовать полный URL с протоколом. Относительные пути работают не всегда корректно.
Тестирование и валидация robots.txt
После создания robots.txt его обязательно нужно протестировать. Я использую несколько инструментов:
Google Search Console
В GSC есть раздел "Тестирование robots.txt". Там можно проверить, как Google интерпретирует ваш файл:
- Заходим в Search Console
- Открываем "Сканирование" → "Тестирование robots.txt"
- Вводим URL для проверки
- Смотрим результат
Яндекс.Вебмастер
У Яндекса тоже есть инструмент проверки robots.txt в разделе "Индексирование".
Онлайн-валидаторы
Я часто использую robotstxt.org для быстрой проверки синтаксиса. Он показывает ошибки форматирования.
Частые ошибки и проблемы
За годы работы я собрал целую коллекцию ошибок в robots.txt. Вот самые частые:
Блокировка всего сайта
Классика жанра — кто-то пишет:
User-agent: *
Disallow: /
И потом удивляется, почему сайт исчез из поиска. Был у меня клиент, который три месяца не мог понять, почему нет трафика.
Неправильная кодировка
Если robots.txt сохранён в Windows-1251 вместо UTF-8, поисковики могут неправильно его интерпретировать. Особенно это касается комментариев на кириллице.
Лишние пробелы и символы
Пробелы в конце строк или табы вместо пробелов могут сломать парсинг файла. Я всегда проверяю это в редакторе с включённым показом невидимых символов.
Блокировка CSS и JS
Google рекомендует не блокировать CSS и JavaScript файлы. Они нужны для корректного рендеринга страниц:
User-agent: *
Disallow: /wp-includes/
Allow: /wp-includes/css/
Allow: /wp-includes/js/
Продвинутые техники
Условная блокировка по User-agent
Иногда нужно настроить разные правила для разных ботов. Например, разрешить Google сканировать больше, а Яндексу — меньше:
User-agent: Googlebot
Disallow: /admin/
Allow: /
User-agent: Yandex
Disallow: /admin/
Disallow: /api/
Disallow: /search/
Crawl-delay: 5
Блокировка по времени
Хотя в стандартном robots.txt нет директивы для блокировки по времени, можно использовать серверные скрипты для генерации динамического robots.txt.
Я делал такую настройку для интернет-магазина, который обновлялся каждую ночь. В это время роботы получали более ограниченный доступ.
Интеграция с .htaccess
Для дополнительной защиты можно настроить .htaccess:
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/admin/ [NC]
RewriteCond %{HTTP_USER_AGENT} !(googlebot|yandexbot) [NC]
RewriteRule ^(.*)$ - [F,L]
Это заблокирует доступ к /admin/ для всех, кроме основных поисковых ботов.
Мониторинг и аналитика
Настройка robots.txt — это не разовая задача. Нужно регулярно мониторить, как поисковики сканируют сайт.
Анализ логов сервера
Я всегда анализирую логи доступа, чтобы понять поведение ботов:
grep "Googlebot" /var/log/nginx/access.log | head -20
Это покажет, какие страницы сканирует Google и с какой частотой.
Мониторинг ошибок сканирования
В Google Search Console и Яндекс.Вебмастере есть отчёты об ошибках сканирования. Я проверяю их еженедельно.
Если вижу много заблокированных URL, которые должны индексироваться, пересматриваю настройки robots.txt.
Robots.txt для e-commerce проектов
Интернет-магазины требуют особого подхода к настройке robots.txt. У меня есть клиент с каталогом в 50 000 товаров, и неправильная настройка может стоить серьёзных денег.
Блокировка фильтров и сортировки
Фильтры создают миллионы дублей. Их обязательно нужно блокировать:
User-agent: *
Disallow: /*?filter=
Disallow: /*?sort=
Disallow: /*?price_from=
Disallow: /*?brand=
Disallow: /*?in_stock=
Disallow: /catalog/*?*&*
Управление пагинацией
С пагинацией сложнее. Полностью блокировать её нельзя — потеряете товары. Я использую такой подход:
User-agent: *
Allow: /catalog/*/page-2/
Allow: /catalog/*/page-3/
Disallow: /catalog/*/page-*
Это разрешает первые несколько страниц пагинации, но блокирует глубокие.
Корзина и личный кабинет
Эти разделы точно не должны попадать в поиск:
User-agent: *
Disallow: /cart/
Disallow: /checkout/
Disallow: /my-account/
Disallow: /wishlist/
Disallow: /compare/
Один раз видел интернет-магазин, где в поиске Яндекса показывались страницы корзин с товарами. Это была катастрофа для конверсии.
Правильная настройка robots.txt — это основа технического SEO. Я видел, как грамотно настроенный файл увеличивал скорость индексации в 2-3 раза. И наоборот — неправильная настройка может похоронить весь SEO-трафик.
При проведении SEO-аудита robots.txt — это первое, на что я обращаю внимание. А если у вас возникают проблемы с индексацией, стоит проверить не только robots.txt, но и другие факторы, которые могут влиять на видимость сайта в поиске.
Нужна помощь с SEO-оптимизацией вашего сайта?
Доверьте настройку robots.txt и другие SEO-задачи нашим экспертам для максимальной видимости в поисковых системах.