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 і canoncial/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