Seo

robots.txt и sitemap.xml: полная настройка

Синтаксис robots.txt, что нельзя блокировать, директивы для AI-ботов, структура sitemap.xml, отправка в Google Search Console и типичные ошибки — практическая настройка.

Автор: Андрій Коваленко 10 мин чтения
Содержание

robots.txt и sitemap.xml — два первых файла, которые Googlebot проверяет при знакомстве с вашим сайтом. Первый говорит, что не трогать. Второй показывает, что стоит посмотреть. Вместе они управляют тем, как Google тратит crawl budget на вашем домене. Настроить их правильно — 30 минут работы, но ошибка в любом из них может заблокировать весь сайт или оставить сотни страниц вне индекса.

Полный контекст технического SEO — в разделе SEO. Здесь — конкретно robots.txt и sitemap.xml: синтаксис, что нельзя блокировать, директивы для AI-ботов, структура sitemap и отправка в GSC.

robots.txt: синтаксис и директивы

Файл robots.txt живёт в корне домена: https://example.com/robots.txt. Он не защищён паролем и доступен всем. Его размер не может превышать 500 КБ — Googlebot игнорирует остаток файла после этого порога.

Базовая структура

User-agent: *
Disallow: /admin/
Disallow: /cart/
Disallow: /checkout/
Disallow: /search/
Disallow: /?s=
Allow: /

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

Директивы:

ДирективаЧто делает
User-agent: *Правило для всех ботов
User-agent: GooglebotПравило только для Googlebot
Disallow: /path/Запретить сканирование этого пути
Allow: /path/Явно разрешить (важно для исключений из широкого Disallow)
Sitemap:URL файла карты сайта
Crawl-delay: 10Пауза между запросами в секундах (Googlebot игнорирует)

Wildcard и точное совпадение

Robots.txt поддерживает два специальных символа:

  • * — любая последовательность символов
  • $ — конец URL

Примеры:

# Запретить все URL с параметром ?sort=
Disallow: /*?sort=

# Запретить URL, заканчивающиеся на .pdf
Disallow: /*.pdf$

# Запретить все страницы пагинации
Disallow: /blog/page/

# Разрешить только главную и /docs/, остальное запретить
Disallow: /
Allow: /$
Allow: /docs/

Важно: если есть и Disallow, и Allow для одного и того же URL, побеждает более специфичное правило. /admin/page.html с Disallow: /admin/ и Allow: /admin/page.html — страница будет разрешена (более длинное совпадение).

Несколько блоков User-agent

Можно написать отдельные правила для разных ботов:

User-agent: Googlebot
Disallow: /staging/
Allow: /

User-agent: Bingbot
Disallow: /staging/
Allow: /

User-agent: *
Disallow: /admin/
Disallow: /staging/

Googlebot и Bingbot следуют своим блокам. Остальные боты — блоку *.

Что НЕЛЬЗЯ блокировать

Самая частая ошибка — заблокировать ресурсы, без которых Google не может нормально отрендерить страницу.

Никогда не блокируйте:

  • CSS-файлы — без стилей Google видит вёрстку страницы без форматирования и может счесть её mobile-unfriendly
  • JavaScript-файлы — Googlebot рендерит JS через Chromium; заблокированный JS = невидимый контент
  • Шрифты — влияют на рендеринг
  • /wp-content/uploads/ — изображения WordPress
  • /wp-content/themes/ и /wp-content/plugins/ — CSS и JS тем и плагинов

Проверка: Google Search Console → Settings → Crawl Stats → откройте «By response» и посмотрите, есть ли blocked resources. Ещё надёжнее — GSC → URL Inspection на произвольной странице → «View crawled page» → вкладка «More info» покажет blocked resources.

Что стоит блокировать:

Disallow: /admin/
Disallow: /wp-admin/
Disallow: /wp-login.php
Disallow: /cart/
Disallow: /checkout/
Disallow: /account/
Disallow: /my-account/
Disallow: /thank-you/
Disallow: /search/
Disallow: /?s=
Disallow: /internal-preview/

Это страницы с дублирующимся или нерелевантным контентом, которые только съедают crawl budget.

AI-боты: современная политика

С 2023 года в robots.txt появились новые User-agent — от AI-компаний, собирающих данные для обучения моделей. Определите свою позицию явно, иначе они сканируют по умолчанию.

Основные AI-боты

User-agentКомпанияЧто делает
GPTBotOpenAIСобирает данные для обучения ChatGPT
Google-ExtendedGoogleДанные для Gemini/Bard (отдельно от Googlebot)
ClaudeBotAnthropicДанные для Claude
CCBotCommon CrawlОткрытый датасет для ML
PerplexityBotPerplexity AIAI-поисковик
Applebot-ExtendedAppleДанные для Apple Intelligence

Вариант 1: заблокировать всех AI-ботов

# SEO-боты — полный доступ
User-agent: Googlebot
Allow: /

User-agent: Bingbot
Allow: /

# AI обучение — заблокировать
User-agent: GPTBot
Disallow: /

User-agent: Google-Extended
Disallow: /

User-agent: ClaudeBot
Disallow: /

User-agent: CCBot
Disallow: /

User-agent: PerplexityBot
Disallow: /

User-agent: Applebot-Extended
Disallow: /

# Остальные
User-agent: *
Disallow: /admin/

Важно: Google-Extended — отдельный User-agent от Googlebot. Блокировка Google-Extended не влияет на SEO-индексацию. Но блокировка Googlebot по ошибке = катастрофа.

Вариант 2: разрешить AI-поисковики, заблокировать training

Некоторые владельцы сайтов хотят появляться в Perplexity или ChatGPT Browse, но не хотят, чтобы контент использовался для обучения. Проблема: сейчас нет надёжного способа разделить «browse» и «train» через robots.txt — одни и те же боты выполняют обе функции.

Проверьте Robots.txt Tester чтобы убедиться, что ваши директивы срабатывают правильно.

robots.txt и canonical/noindex: что важнее

Критическое понимание: robots.txt блокирует сканирование, но не индексацию.

ДирективаБлокирует сканированиеБлокирует индексацию
Disallow: в robots.txtДаНет
<meta name="robots" content="noindex">НетДа
X-Robots-Tag: noindex (HTTP-заголовок)НетДа

Если вы хотите, чтобы страница не была в Google — ставьте noindex, не Disallow. Если вы поставили Disallow, но на эту страницу ведут ссылки с других сайтов, Google увидит URL и может показать её в результатах как «No information available» — без заголовка и сниппета.

Есть и обратная проблема: если страница заблокирована в robots.txt, Googlebot не может прочитать noindex на ней. Поэтому если хотите и заблокировать сканирование, и исключить из индекса — сначала дождитесь, пока Google удалит её из индекса (через noindex), потом добавляйте Disallow.

sitemap.xml: структура и формат

Sitemap.xml — XML-файл со списком URL для индексации. Он не гарантирует индексацию, но ускоряет обнаружение новых страниц и сигнализирует Google, что эти URL важны.

Минимальный валидный файл

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://example.com/</loc>
    <lastmod>2026-06-24</lastmod>
  </url>
  <url>
    <loc>https://example.com/seo/robots-txt-guide/</loc>
    <lastmod>2026-06-24</lastmod>
  </url>
</urlset>

Обязательно: <loc> с абсолютным URL. Остальное — опционально.

Все теги и что они означают

<url>
  <!-- Обязательно: полный абсолютный URL -->
  <loc>https://example.com/page/</loc>

  <!-- Дата последнего реального изменения (ISO 8601) -->
  <!-- Полезный сигнал для Googlebot -->
  <lastmod>2026-06-24</lastmod>

  <!-- Частота изменений. Google в основном игнорирует -->
  <!-- Допустимые: always, hourly, daily, weekly, monthly, yearly, never -->
  <changefreq>monthly</changefreq>

  <!-- Относительная важность от 0.0 до 1.0. Google в основном игнорирует -->
  <priority>0.8</priority>
</url>

<changefreq> и <priority> Google официально подтвердил как «mostly ignored». Не тратьте время на их тонкую настройку. Сосредоточьтесь на <lastmod> — он действительно используется.

Что включать и что не включать

Включайте:

  • Страницы с HTTP 200
  • Canonical-версии URL (не дубли с параметрами)
  • Страницы без noindex
  • Страницы, доступные без авторизации

НЕ включайте:

  • URL с noindex
  • URL с redirect (301/302)
  • Страницы, возвращающие 404 или 5xx
  • Дубликаты с UTM-параметрами (?utm_source=email)
  • Страницы пагинации (опционально — зависит от стратегии)
  • /admin/, /cart/, /checkout/

Включение URL с redirect или noindex в sitemap — классическая ошибка. Google воспринимает это как противоречивый сигнал: «ты просишь меня проиндексировать это, но тут стоит noindex». Результат — сниженное доверие ко всему sitemap.

Sitemap index для больших сайтов

Если URL больше 50 000 или хотите удобную структуру — используйте sitemap index:

<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <sitemap>
    <loc>https://example.com/sitemap-posts.xml</loc>
    <lastmod>2026-06-24</lastmod>
  </sitemap>
  <sitemap>
    <loc>https://example.com/sitemap-products.xml</loc>
    <lastmod>2026-06-24</lastmod>
  </sitemap>
  <sitemap>
    <loc>https://example.com/sitemap-categories.xml</loc>
    <lastmod>2026-06-24</lastmod>
  </sitemap>
</sitemapindex>

Лимит sitemap index — 50 000 дочерних sitemap-файлов. Лимит каждого дочернего — 50 000 URL или 50 МБ.

Специализированные sitemap

Помимо текстовых URL можно добавлять дополнительные данные для медиаконтента:

Image sitemap (расширение namespace):

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
  <url>
    <loc>https://example.com/article/seo-guide/</loc>
    <image:image>
      <image:loc>https://example.com/images/seo-guide-cover.jpg</image:loc>
      <image:title>Пошаговый гайд по SEO</image:title>
    </image:image>
  </url>
</urlset>

Video sitemap и News sitemap — аналогичная структура со своими namespace. Google использует их для Google Images, Google Videos и Google News соответственно.

Как отправить sitemap в Google Search Console

Отправка sitemap в GSC — обязательный шаг для каждого сайта. Она ускоряет первое сканирование и даёт постоянный мониторинг статуса.

Пошаговый процесс

  1. Откройте Google Search Console и выберите нужный сайт.
  2. В левом меню — раздел «Sitemaps» (в блоке «Indexing»).
  3. В поле «Add a new sitemap» введите URL файла — можно относительный (sitemap.xml) или абсолютный (https://example.com/sitemap.xml).
  4. Нажмите «Submit».
  5. GSC покажет статус: «Success» или ошибку парсинга.

Что показывает GSC после отправки

ПоказательЧто означает
Discovered URLsСколько URL найдено в файле
IndexedСколько из них реально в индексе Google
Last readКогда Google последний раз читал файл
Status: Success/ErrorЕсть ли ошибки парсинга XML

Разница между «Discovered» и «Indexed» — нормальная. Google не индексирует всё, что вы просите. Страницы с тонким контентом, дубли, страницы с плохим UX — отфильтровываются.

Sitemap в Bing Webmaster Tools

Bing / DuckDuckGo — отдельный индекс. Отправьте sitemap и там:

  1. Bing Webmaster Tools → ваш сайт.
  2. «Sitemaps» → «Submit sitemap».
  3. Введите URL и подтвердите.

Bing также поддерживает IndexNow API — протокол мгновенного уведомления о новых URL без ожидания краулера. Некоторые CMS-плагины (например Rank Math для WordPress) отправляют уведомления через IndexNow автоматически.

Связь между robots.txt и sitemap

Самый простой способ сообщить всем ботам о вашем sitemap — строка Sitemap: в robots.txt:

User-agent: *
Disallow: /admin/

Sitemap: https://example.com/sitemap.xml
Sitemap: https://example.com/sitemap-images.xml

Можно указать несколько строк Sitemap. Это находит Googlebot при первом краулинге ещё до того, как вы отправили sitemap через GSC.

Полная схема взаимодействия файлов:

Googlebot приходит на сайт
  ↓
Читает robots.txt:
  - находит правила Disallow/Allow
  - находит строку Sitemap
  ↓
Загружает sitemap.xml
  ↓
Обходит URL из списка (где разрешено)
  ↓
Проиндексированные страницы → Google Search

Типичные ошибки и как их избежать

1. Disallow: / для всех после переноса сайта

Самая распространённая и деструктивная ошибка. Стейджинг-сервер обычно имеет Disallow: / чтобы не попасть в индекс. При переносе на продакшн — забыли убрать.

Результат: через 1-2 недели сайт выпадает из Google. Симптом в GSC: Pages → «Blocked by robots.txt» начало резко расти.

Проверка после каждого деплоя: https://yoursite.com/robots.txt — первая строка после User-agent: * не должна быть Disallow: /.

2. Блокировка CSS и JavaScript

# ПЛОХО — Google не рендерит страницу нормально
User-agent: *
Disallow: /wp-content/

Эта строка блокирует и uploads (изображения), и themes (CSS), и plugins (JS). Google рендерит страницу без стилей и скриптов — Mobile Usability report показывает «Content wider than screen», «Text too small».

3. Sitemap содержит redirect-URL или noindex-страницы

Пример: после редизайна старые URL получили 301 на новые, но старый sitemap не обновили. Теперь Google видит в sitemap страницы, которые сами говорят «я не здесь».

Проверка: проверяйте статус-коды URL в вашем sitemap раз в месяц. Screaming Frog или Ahrefs Site Audit делает это автоматически.

4. Отсутствующий lastmod или фиктивная дата

Ставить <lastmod>2026-06-24</lastmod> на всех страницах при каждом обновлении sitemap — это обман краулера. Google учится игнорировать такой сигнал.

Правильно: <lastmod> обновляется только для страниц, на которых реально изменился контент.

5. robots.txt без Allow: / при широком Disallow

# ОПАСНО — всё заблокировано?
User-agent: *
Disallow: /private/

На самом деле это нормально — Disallow блокирует только /private/, остальное разрешено по умолчанию. Но Allow: / в конце — явное подтверждение для читабельности и чтобы избежать ошибок.

6. Несколько Disallow вместо wildcard

# Долго и что-то забудете
Disallow: /?color=red
Disallow: /?color=blue
Disallow: /?color=green

# Лучше
Disallow: /?color=

Или: если у вас сотни параметров URL (e-commerce фильтры) — не перечисляйте их в robots.txt, лучше поставьте canonical на основные URL и noindex на отфильтрованные страницы.

7. Забыли заблокировать внутренний поиск

WordPress: /search/ и /?s= дают бесконечное количество уникальных URL с разными поисковыми запросами. Если их не заблокировать, Google может индексировать тысячи страниц «результатов поиска» с никчёмным контентом.

Disallow: /search/
Disallow: /?s=

8. AI-бот директивы после User-agent: *

# НЕПРАВИЛЬНО — Google-Extended попадает под User-agent: *
User-agent: *
Disallow: /

User-agent: Google-Extended
Disallow: /

Robots.txt обрабатывается сверху вниз. Googlebot видит User-agent: * и применяет Disallow: / — весь сайт заблокирован. Всегда прописывайте User-agent: Googlebot + Allow: / явно в отдельном блоке, прежде чем ставить глобальные ограничения.

Проверка настроек

Чек-лист перед запуском

  • https://yoursite.com/robots.txt возвращает 200, не redirect и не 404
  • Первая строка после User-agent: * — НЕ Disallow: /
  • CSS, JS, fonts и /uploads/ НЕ заблокированы
  • User-agent: Googlebot с Allow: / есть явно, если есть другие ограничительные блоки
  • AI-бот директивы написаны — или разрешить, или заблокировать, осознанно
  • Строка Sitemap: указывает на правильный URL
  • Sitemap.xml возвращает 200 и является валидным XML
  • Sitemap содержит только 200-страницы без noindex и без redirect
  • <lastmod> в sitemap — реальные даты изменений
  • Sitemap отправлен в Google Search Console и Bing Webmaster Tools

Инструменты для проверки

  • Robots.txt Tester — проверьте конкретные URL на разрешённость
  • Google Search Console → URL Inspection — реальный статус сканирования
  • Google Search Console → Sitemaps — статус обработки и количество URL
  • SEO Audit Checklist — полный чек-лист технического аудита

Если вы настраиваете сайт с нуля или после переноса — пройдитесь по чек-листу полностью. Два файла, robots.txt и sitemap.xml, занимают 30 минут на правильную настройку и потенциально спасают от месяцев проблем с индексацией.


Связанные материалы:

Похожие статьи

Смотрите также

Эту статью пишет и обновляет Андрій Коваленко — без AI-воды и партнёрских ссылок. Заметил устаревший факт или неточность — напиши, перепишу в ту же неделю.

Кто ведёт сайт и почему без AI