robots.txt і meta robots: докладний розбір
robots.txt і meta robots — два інструменти, які плутають найчастіше. Перший керує обходом, другий — індексуванням і показом. Головне правило, на якому тримається весь урок: robots.txt потрібен здебільшого, щоб не перевантажувати сайт запитами, а не щоб сховати сторінку від Google. Для цього є noindex або пароль. Далі — як Google розбирає файл, які директиви підтримує, як конфліктують правила і що відбувається за помилок сервера.
Основа — специфікація Google про розбір robots.txt та опис метатега robots і X-Robots-Tag. Базове вступ — в уроці про robots.txt; тут — подробиці.
Де лежить файл і на що поширюється
- Файл має бути текстом в UTF-8, лежати в корені хоста;
- він діє лише для свого хоста, протоколу й порту: файл на example.com не поширюється на піддомен, на http і на інший порт, а файл у підпапці не перевіряється взагалі;
- межа розміру — 500 КіБ, усе, що далі, ігнорується;
- назви полів не залежать від регістру, але шляхи в правилах залежать від нього;
- Google кешує файл зазвичай до 24 годин.
Які директиви підтримуються
| Поле | Значення |
|---|---|
user-agent | до якого робота належать правила |
disallow | шлях, який не можна сканувати |
allow | шлях, який можна сканувати |
sitemap | повний URL мапи сайту |
Це весь список. Нерідко називають ще директиву Crawl-delay, але Google інші поля, наприклад crawl-delay, не підтримує. Недійсні рядки Google ігнорує. Докладніше про мапи сайту — в уроці про XML-мапи.
Як обирається група і правило
- Група. Google обирає групу з найвідповіднішим user-agent; порядок груп неважливий. Якщо для робота оголошено кілька спеціальних груп, їхні правила обʼєднуються, а група із зірочкою з ними не обʼєднується;
- Правило. Застосовується найспецифічніше правило за довжиною шляху; за конфлікту, зокрема з підстановками, береться найменш суворе. Тому твердження «Allow завжди перебиває Disallow» неточне: важлива довжина шляху;
- Підстановки. Підтримуються дві: зірочка (будь-яка кількість будь-яких символів) і знак долара (кінець URL). Кінцева зірочка ігнорується.
User-agent: * Disallow: /cart/ Disallow: /*?sessionid= Allow: /cart/help User-agent: Googlebot-Image Disallow: /drafts/ Sitemap: https://example.com/sitemap.xml
Що буде за помилок
- Відповіді 4xx (крім 429) Google сприймає так, ніби файлу немає: обмежень немає;
- Відповіді 5xx. Перші 12 годин Google припиняє обхід сайту й намагається отримати файл знову; потім до 30 днів використовує останню вдалу версію; якщо версії немає, вважає, що обмежень немає. Тому «лежачий» robots.txt — не дрібниця;
- не використовуйте 401 і 403 для обмеження частоти обходу — вони на неї не впливають.
Стан файлу видно у звіті robots.txt у Search Console: які файли Google знайшов для основних хостів, коли обходив і які були попередження. Застарілий «Тест robots.txt» із меню інструментів замінено цим звітом.
Що закривати, а що ні
Закривати має сенс те, що створює навантаження без користі для пошуку: кошик, внутрішній пошук, адреси із сеансовими ідентифікаторами. Не закривайте те, без чого Google не зрозуміє сторінку: інакше він погано проаналізує сторінки, що залежать від цих ресурсів. Для JavaScript є додаткове правило: Google не виконує скрипти із заблокованих файлів; подробиці — в уроці про JavaScript і SEO.
Метатег robots
Метатег у head або заголовок X-Robots-Tag керують індексуванням і показом. Правила можна комбінувати через кому; вони не залежать від регістру. Для поточних цілей важливі:
| Правило | Ефект |
|---|---|
noindex | не показувати сторінку в результатах |
nofollow | не переходити за посиланнями сторінки; без нього Google може використовувати їх для виявлення |
none | те саме, що noindex і nofollow |
nosnippet | не показувати текстовий фрагмент і відеопревʼю |
max-snippet: N | не більше N символів текстового фрагмента |
Два уточнення. По-перше, Google більше не використовує noarchive, бо кешованого посилання в результатах більше немає. По-друге, за конфлікту правил діє суворіше: якщо на сторінці є і max-snippet:50, і nosnippet, застосовується nosnippet.
X-Robots-Tag: для PDF і не тільки
Заголовок HTTP дає змогу задати ті самі правила для файлів, у яких немає head: PDF, зображень, документів. Можна вказати робота перед правилами: X-Robots-Tag: googlebot: nofollow. Правила без указання робота діють на всіх.
HTTP/1.1 200 OK X-Robots-Tag: noindex
Головна пастка: Disallow + noindex
Це найвідоміша пастка. Правило з посібника про блокування індексації: щоб noindex спрацював, сторінка не має бути закрита в robots.txt і має бути доступна для обходу. Якщо закрити, робот правила не побачить, і сторінка все одно може зʼявитися в результатах, наприклад якщо на неї посилаються. Для прибраної з видачі сторінки порядок такий: спочатку відкрити обхід, дати noindex, дочекатися виключення, лише потім за потреби закривати.
Robots.txt, noindex і canonical
Це три різні інструменти для трьох різних завдань: навантаження на сайт, видимість у результатах і вибір основного URL. Для дублів документація прямо застерігає: не використовуйте robots.txt для канонізації, а noindex не рекомендовано використовувати, щоб запобігти вибору канонічної сторінки на одному сайті. Докладніше — в уроках про дубльований контент і тег canonical.
Як перевірити
- Відкрийте звіт robots.txt у Search Console й переконайтеся, що файл знайдено без помилок для кожного хоста.
- Перевірте, що немає випадкового
Disallow: /. - Через аналізатор сторінки перевірте, що сторінки, які мають бути в пошуку, не позначені noindex.
- Обійдіть сайт краулером і знайдіть сторінки з noindex, закриті водночас у robots.txt.
- Для масової перевірки статусів індексування — аудит URL. Загальні питання обходимості — в уроці про обходимість.
Чек-лист
- robots.txt лежить у корені кожного хоста, в UTF-8, не більше 500 КіБ.
- Використовуються лише підтримувані поля: user-agent, allow, disallow, sitemap.
- Немає випадкового
Disallow: /. - Закрито те, що дає навантаження, але не потрібне пошуку; ресурси для відображення відкриті.
- Сторінки з noindex не закриті в robots.txt.
- Для PDF та інших файлів використовується X-Robots-Tag.
Помилки
- Закривати в robots.txt те, що треба прибрати з пошуку.
- Водночас Disallow і noindex на одній сторінці.
- Використовувати Crawl-delay, очікуючи ефекту в Google.
- Закривати CSS і JavaScript, потрібні для відображення.
- Використовувати robots.txt для канонізації.
Що далі
Далі — тег canonical: як задати бажаний URL, не закриваючи дублі від обходу.