robots.txt і sitemap.xml: повне налаштування
Синтаксис robots.txt, що не можна блокувати, AI-бот директиви, структура sitemap.xml, відправка в Google Search Console і типові помилки — практичне налаштування.
Зміст
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 | Компанія | Що робить |
|---|---|---|
GPTBot | OpenAI | Збирає дані для навчання ChatGPT |
Google-Extended | Дані для Gemini/Bard (окремо від Googlebot) | |
ClaudeBot | Anthropic | Дані для Claude |
CCBot | Common Crawl | Відкритий датасет для ML |
PerplexityBot | Perplexity AI | AI-пошуковик |
Applebot-Extended | Apple | Дані для 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 — обов’язковий крок для кожного сайту. Вона прискорює перше сканування і дає постійний моніторинг статусу.
Покроковий процес
- Відкрийте Google Search Console і виберіть потрібний сайт.
- У лівому меню — розділ «Sitemaps» (в блоці «Indexing»).
- У полі «Add a new sitemap» введіть URL файлу — можна відносний (
sitemap.xml) або абсолютний (https://example.com/sitemap.xml). - Натисніть «Submit».
- 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 і там:
- Bing Webmaster Tools → ваш сайт.
- «Sitemaps» → «Submit sitemap».
- Введіть 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 хвилин на правильне налаштування і потенційно рятують від місяців проблем з індексацією.
Пов’язані матеріали:
- Технічне SEO: повний посібник — crawling, indexing, CWV, hreflang
- Robots.txt Tester — перевірка синтаксису онлайн
- SEO Audit Checklist — повний пошаговий аудит сайту
Схожі статті
Технічне SEO: повний посібник з чого почати — індексація, Core Web Vitals, schema.org, hreflang
Покроковий посібник з технічного SEO для початківців: crawling, indexing, robots.txt, sitemap.xml, canonical, hreflang, Core Web Vitals (LCP/INP/CLS), schema.org, mobile-first і типові помилки.
ToolsRobots.txt Tester — перевірка правил сканування
Безкоштовний онлайн-тестер robots.txt: перевіряє дозвіл на сканування URL для 16 пошукових і AI-ботів (Googlebot, Bingbot, GPTBot, ClaudeBot), показує правило і рядок.
SeoCore Web Vitals: як виміряти і покращити
LCP, INP, CLS — пороги, інструменти вимірювання (PageSpeed Insights, CrUX, Lighthouse, web-vitals JS) і конкретні способи покращити кожну метрику.