Вебмайстер
Яндекс для вебмайстрів
Як Яндекс індексує сайти
Сайт на сторінці результатів пошуку
Сервіс «Яндекс.Вебмайстер»
Налаштування індексування
Вміст сайту
Сайт у результатах пошуку
Безпека сайтів
Сервіси Яндекса на вашому сайті

Використання robots.txt

Що таке файл robots.txt

Robots.txt — текстовий файл, розміщений на сайті, який призначений для роботів пошукових систем. У цьому файлі вебмайстер може зазначити параметри індексування свого сайту як для всіх роботів одразу, так і для кожної пошукової системи окремо.

Як створити robots.txt

Скористайтеся будь-яким текстовим редактором (наприклад, Блокнотом або WordPad'ом), створіть файл з ім'ям "robots.txt" і заповніть його відповідно до поданих нижче правил. Після цього необхідно завантажити файл у кореневий каталог вашого сайту.

Щоб перевірити правильність обробки вашого файлу robots.txt, скористайтеся аналізатором файлу robots.txt.

Директива User-agent

Керувати доступом робота Яндекса до вашого сайту ви можете за допомогою файлу robots.txt, який повинен бути розміщений у кореневій директорії сайту. Робот Яндекса підтримує стандарт опису http://www.robotstxt.org/robotstxt.html із розширеними можливостями, описаними нижче.

У роботі Яндекса використовується сесійний принцип роботи, на кожну сесію формується певний пул сторінок, які планує завантажити робот. Сесія розпочинається із завантаження robots.txt сайту, якщо його немає, він не текстовий або на запит робота повертається HTTP-код, відмінний від '200', вважається, що доступ роботу не обмежено. У самому robots.txt перевіряється наявність записів, що починаються з 'User-agent:', у них шукаються підрядки 'Yandex', або '*' (регістр не має значення), причому, якщо виявлено 'User-agent: Yandex', директиви для 'User-agent: *' не враховуються. Якщо записи 'User-agent: Yandex' і 'User-agent: *' відсутні, вважається, що доступ роботу не обмежено.

Наступним роботам Яндекса можна зазначити окремі директиви:

Для кожного з них також діє правило: якщо виявлено директиви для конкретного робота, директиви 'User-agent: Yandex' і 'User-agent: *' не використовуються.

Приклад:

User-agent: YandexBot # буде використовуватися лише основним індексуючим роботом
Disallow: /*id=

User-agent: Yandex # буде використана всіма роботами Яндекса
Disallow: /*sid= # крім основного індексуючого

User-agent: * # не буде використана роботами Яндекса
Disallow: /cgi-bin 

Використання директив Disallow і Allow

Щоб заборонити доступ робота до деяких частин сайту або сайту повністю, використовуйте директиву 'Disallow'. Приклади:

User-agent: Yandex
Disallow: / # блокує доступ до всього сайту

User-agent: Yandex
Disallow: /cgi-bin # блокує доступ до сторінок
                   #що починаються з '/cgi-bin'

Примітка:

Неприпустима наявність пустих переведень рядка між директивами 'User-agent' і 'Disallow' ('Allow'), а також між самими 'Disallow' ('Allow') директивами.

Крім того, відповідно до стандарту перед кожною директивою 'User-agent' рекомендується вставляти пусте переведення рядка.

Символ '#' призначений для опису коментарів. Все, що знаходиться після цього символу та до першого переведення рядка, не враховується.

Щоб дозволити доступ роботу до деяких частин сайту або сайту повністю, використовуйте директиву, 'Allow'. Приклади:

User-agent: Yandex
Allow: /cgi-bin
Disallow: /
# забороняє завантажувати все, крім сторінок
# що починаються з '/cgi-bin'

Спільне використання директив.

Директиви Allow і Disallow із відповідного User-agent блоку сортуються за довжиною префікса URL (від меншого до більшого) та застосовується послідовно. Якщо для цієї сторінки сайту підходить кілька директив, то вибирається остання в порядку появи в сортованому списку. Таким чином порядок розташування директив у файлі robots.txt не впливає на використання їх роботом. Приклади:

# Вихідний robots.txt:
User-agent: Yandex
Allow: /catalog
Disallow: /
# Сортований robots.txt:
User-agent: Yandex
Disallow: /
Allow: /catalog
# дозволяє завантаження лише сторінки,
# що починається з '/catalog'
# Вихідний robots.txt:
User-agent: Yandex
Allow: /
Allow: /catalog/auto
Disallow: /catalog
# Сортований robots.txt:
User-agent: Yandex
Allow: /
Disallow: /catalog
Allow: /catalog/auto
# забороняє завантаження сторінок, що починаються з '/catalog',
# але дозволяє завантаження сторінок, що починаються з '/catalog/auto'.

Важливо. У разі виникнення конфлікту між двома директивами з префіксами однакової довжини пріоритет віддається директиві Allow.

Директиви Allow-Disallow без параметрів.

Відсутність параметрів у директиви трактується так:

User-agent: Yandex
Disallow: # те ж, що і Allow: /

User-agent: Yandex
Allow: # не враховується роботом

Використання спецсимволів "*" та "$"

Під час зазначення шляхів директив Allow-Disallow можна використовувати спецсимволи '*' і '$', задаючи, таким чином, певні регулярні вирази. Спецсимвол '*' означає будь-яку (у тому числі порожню) послідовність символів. Приклади:

User-agent: Yandex
Disallow: /cgi-bin/*.aspx # забороняє '/cgi-bin/example.aspx'
                          # і '/cgi-bin/private/test.aspx'
Disallow: /*private # забороняє не лише '/private',
                    # але й '/cgi-bin/private'

Спецсимвол '$'

За замовчуванням до кінця кожного правила, описаного в robots.txt, приписується '*', наприклад:

User-agent: Yandex
Disallow: /cgi-bin* # блокує доступ до сторінок
                    # що починаються з '/cgi-bin'
Disallow: /cgi-bin # те саме

Щоб скасувати '*' в кінці правила, можна використати спецсимвол '$', наприклад:

User-agent: Yandex
Disallow: /example$ # забороняє '/example', 
                    # але не забороняє '/example.html'

, тоді як:

User-agent: Yandex
Disallow: /example # забороняє і '/example', 
                   # і '/example.html'

Мається на увазі, що '$' не забороняє явно проставлені '*' в кінці, тобто:

User-agent: Yandex
Disallow: /example$ # забороняє лише '/example'
Disallow: /example*$ # так само, як 'Disallow: /example' 
                     #забороняє і /example.html і /example

Директива Sitemap

Якщо ви використовуєте опис структури вашого сайту у форматі sitemaps.xml і хочете, щоб робот дізнався про неї, зазначте шлях до sitemaps.xml як параметр директиви 'Sitemap' (якщо файлів декілька, зазначте всі). Приклади:

User-agent: Yandex
Allow: /
Sitemap: http://mysite.ua/site_structure/my_sitemaps1.xml
Sitemap: http://mysite.ua/site_structure/my_sitemaps2.xml

чи

User-agent: Yandex
Allow: /

User-agent: *
Disallow: /

Sitemap: http://mysite.ua/site_structure/my_sitemaps1.xml
Sitemap: http://mysite.ua/site_structure/my_sitemaps2.xml

Робот запам'ятає шляхи до sitemaps.xml, обробить файли та використовуватиме результати під час подальшого формування сесій завантаження.

Директива Host

Якщо у вашого сайту є дзеркала, спеціальний робот дзеркальник визначить їх і сформує групу дзеркал вашого сайту. У пошуку братиме участь лише головне дзеркало. Ви можете зазначити його в усіх дзеркал за допомогою robots.txt, використовуючи директиву 'Host' і визначивши як її параметр ім'я головного дзеркала. Директива 'Host' не гарантує вибір зазначеного головного дзеркала, проте, алгоритм під час ухвалення рішення враховує її з високим пріоритетом. Приклад:

#Якщо www.golovne-dzerkalo.ua головне дзеркало сайту, то  
#robots.txt для всіх сайтів із групи дзеркал виглядає так 
User-Agent: *
Disallow: /forum
Disallow: /cgi-bin
Host: www.golovne-dzerkalo.ua

Важливо: з метою сумісності з роботами, які не повністю наслідують стандарт під час обробки robots.txt, директиву 'Host' необхідно додавати у групі, що починається із запису 'User-Agent', безпосередньо після директив 'Disallow'('Allow'). Аргументом директиви 'Host' є доменне ім'я з номером порту (80 за замовчуванням), відокремленим двокрапкою.

#Приклад коректно складеного robots.txt, при обробці 
#якого директива Host враховується
User-Agent: *
Disallow:
Host: www.myhost.ua

Проте директива Host є міжсекційною, тому використовуватиметься роботом незалежно від місця у файлі robots.txt, де вона зазначена.

Важливо: Директива Host у файлі robots.txt може бути лише одна. У разі зазначення декількох директив, використовуватися буде перша.

Приклад:

Host: myhost.ua # використовується

User-agent: *
Disallow: /cgi-bin

User-agent: Yandex
Disallow: /cgi-bin
Host: www.myhost.ua # не використовується

Важливо: параметр директиви Host зобов'язаний складатися з одного коректного імені хосту (тобто такого, що відповідає RFC 952 і не є IP-адресою) і допустимого номера порту. Некоректно складені рядки 'Host:' ігноруються.

# Приклади директив Host, які ігноруються
Host: www.myhost-.ua
Host: www.-myhost.ua
Host: www.myhost.ua:100000
Host: www.my_host.ua
Host: .my-host.ua:8000
Host: my-host.ua.
Host: my..host.ua
Host: www.myhost.ua/
Host: www.myhost.ua:8080/
Host: http://www.myhost.ua
Host: 213.180.194.129
Host: www.firsthost.ua,www.secondhost.ua
Host: www.firsthost.ua www.secondhost.ua

Приклади використання директиви Host:

# domen.myhost.ua є головним дзеркалом 
# www.domen.myhost.ua, тоді коректне використання 
# директиви Host таке:
User-Agent: *
Disallow:
Host: domen.myhost.ua

# domen.myhost.ua є головним дзеркалом
# www.domen.myhost.ua, тоді некоректне використання 
# директиви Host таке:
User-Agent: *
Disallow:
Host: myhost.ua

Директива Crawl-delay

Якщо сервер сильно навантажений і не встигає відпрацьовувати запити на завантаження, скористайтеся директивою "Crawl-delay". Вона дозволяє задати пошуковому роботу мінімальний період часу (в секундах) між кінцем завантаження однієї сторінки та початком завантаження наступної. З метою сумісності з роботами, які не повністю дотримуються стандарту під час обробки robots.txt, директиву "Crawl-delay" необхідно додавати у групі, що розпочинається із запису "User-Agent", безпосередньо після директив "Disallow" ("Allow").

Пошуковий робот Яндекса підтримує дробові значення Crawl-Delay, наприклад, 0.5. Це не гарантує, що пошуковий робот заходитиме на ваш сайт кожні півсекунди, але дає роботу більше свободи та дозволяє прискорити обхід сайту.

Приклади:

User-agent: Yandex
Crawl-delay: 2 # задає таймаут у 2 секунди

User-agent: *
Disallow: /search
Crawl-delay: 4.5 # задає таймаут у 4.5 секунди

Директива Clean-param

Якщо адреси сторінок вашого сайту містять динамічні параметри, які не впливають на їх зміст, (наприклад: ідентифікатори сесій, користувачів, реферерів тощо), ви можете описати їх за допомогою директиви 'Clean-param'. Робот Яндекса, використовуючи цю інформацію, не буде багаторазово перезавантажувати інформацію, яка дублюється. Таким чином, збільшиться ефективність обходу вашого сайту, знизиться навантаження на сервер.

Наприклад, на сайті є сторінки:

www.site.ua/some_dir/get_book.pl?ref=site_1&book_id=123
www.site.ua/some_dir/get_book.pl?ref=site_2&book_id=123
www.site.ua/some_dir/get_book.pl?ref=site_3&book_id=123

Параметр 'ref=' використовується лише для того, щоб відстежити, з якого ресурсу був зроблений запит, і не змінює зміст. За всіма трьома адресами буде показана одна й та ж сторінка з книжкою 'book_id=123'. Тоді, якщо в robots.txt зазначити:

Clean-param: ref /some_dir/get_book.pl

Ось так:

User-agent: Yandex
Disallow:
Clean-param: ref /some_dir/get_book.pl

Робот Яндекса зведе всі адреси сторінки до однієї:

www.site.ua/some_dir/get_book.pl?ref=site_1&book_id=123,

Якщо на сайті доступна сторінка без параметрів:

www.site.ua/some_dir/get_book.pl?book_id=123

Тоді все зведеться саме до неї, коли вона буде проіндексована роботом. Інші сторінки вашого сайту обходитимуться частіше, оскільки немає потреби оновлювати сторінки:

www.site.ua/some_dir/get_book.pl?ref=site_2&book_id=123
www.site.ua/some_dir/get_book.pl?ref=site_3&book_id=123

Синтаксис використання директиви:

Clean-param: p0[&p1&p2&..&pn] [path]

У першому полі через '&' перераховуються параметри, які потрібно не враховувати. У другому полі зазначається префікс шляху сторінок, до яких потрібно застосувати правило.

Важливо: директива Clean-Param є міжсекційною, тому може бути зазначена в будь-якому місці файлу robots.txt. У разі, якщо директив зазначено кілька, всі вони будуть враховані роботом.

Примітка:

Префікс може містити регулярний вираз у форматі, аналогічному robots.txt, але з деякими обмеженнями: можна використовувати лише символи A-Za-z0-9.-/*_. При цьому * трактується так само, як у robots.txt. У кінець префікса завжди неявно дописується '*', тобто:

Clean-param: s /forum/showthread.php

Це означає, що параметр s вважатиметься незначущим для всіх url-ів, що починаються з /forum/showthread.php. Друге поле зазначати необов'язково, в цьому випадку правило застосовуватиметься для всіх сторінок сайту. Регістр враховується. Діє обмеження на довжину правила — 500 символів. Наприклад:

Clean-param: abc /forum/showthread.php
Clean-param: sid&sort /forumt/*.php
Clean-param: someTrash&otherTrash

Додаткові приклади:

#для адрес виду:
www.site1.ua/forum/showthread.php?s=681498b9648949605&t=8243
www.site1.ua/forum/showthread.php?s=1e71c4427317a117a&t=8243
#robots.txt буде містити:
User-agent: Yandex
Disallow:
Clean-param: s /forum/showthread.php
#для адрес  виду:
www.site2.ua/index.php?page=1&sort=3a&sid=2564126ebdec301c607e5df
www.site2.ua/index.php?page=1&sort=3a&sid=974017dcd170d6c4a5d76ae
#robots.txt буде містити:
User-agent: Yandex
Disallow:
Clean-param: sid /index.php
#якщо таких параметрів кілька:
www.site1.ua/forum_old/showthread.php?s=681498605&t=8243&ref=1311
www.site1.ua/forum_new/showthread.php?s=1e71c417a&t=8243&ref=9896
#robots.txt буде містити:
User-agent: Yandex
Disallow:
Clean-param: s&ref /forum*/showthread.php
#якщо параметр використовується в кількох скриптах:
www.site1.ua/forum/showthread.php?s=681498b9648949605&t=8243
www.site1.ua/forum/index.php?s=1e71c4427317a117a&t=8243
#robots.txt буде містити:
User-agent: Yandex
Disallow:
Clean-param: s /forum/index.php
Clean-param: s /forum/showthread.php

Додаткова інформація

Директиви robots.txt, які не згадані в цьому описі, робот Яндекса не підтримує. Викладені вище правила обробки файлу robots.txt в сукупності є розширенням звичайного стандарту, й інші роботи можуть інакше інтерпретувати файли robots.txt, в яких, наприклад, використовується директива Allow, спецсимвол '$' та спецсимвол '*' всередині URL.

Приклади обробки різних файлів robots.txt роботом Яндекса та роботом, що підтримує лише основний стандарт:

User-agent: Yandex 
Allow: /
Disallow: /
# робот Яндекса інтерпретує цей файл як такий, що дозволяє індексування всіх сторінок сайту 
# робот, який не підтримує описані розширення стандарту, обробить файл  
# як такий, що повністю забороняє, оскільки 'Allow: /' буде ним ігноруватися

User-agent: Yandex
Disallow: /private*html
# для робота Яндекса це правило заборонить індексацію та сторінки '/private*html', 
# '/private/test.html' і '/private/html/test.aspx' тощо
# для робота, який діє за суворим стандартом, правило заборонить лише '/private*html'

User-agent: Yandex
Disallow: /private$
# для робота Яндекса правило забороняє індексацію лише сторінки '/private'
# для робота, що діє без розширень, правило забороняє обхід і сторінки '/private$', 
# і '/private$test' тощо

User-agent: *
Disallow: /
User-agent: Yandex
Allow: /
# робот Яндекса виділяє записи за наявністю в рядку 'User-agent:', 
# тому результатом обробки в цьому випадку буде 'Allow: /'
# без розширень через відсутність перекладу рядка 
# 'User-agent: Yandex' було б проігноровано, і 
# результатом стало б 'Disallow: /'

User-agent: *
Disallow: /
# коментар1...
# коментар2...
# коментар3...
User-agent: Yandex
Allow: /
# аналогічно попередньому прикладу (див. вище)

Додаткові приклади різних файлів robots.txt:

User-agent: Yandex
Allow: /archive
Disallow: /
# дозволяється все, що містить '/archive', решта заборонено 

User-agent: Yandex
Allow: /obsolete/private/*.html$  # дозволяє html-файли на шляху '/obsolete/private/...'
Disallow: /*.php$                 # забороняє все '*.php' на цьому сайті
Disallow: /*/private/             # забороняє всі підшляхи, що містять '/private/', 
                                  # але Allow вище скасовує частину заборони
Disallow: /*/old/*.zip$           # забороняє всі '*.zip' файли, що містять на шляху '/old/'

User-agent: Yandex
Disallow: /add.php?*user= 
# забороняє всі скрипти 'add.php?' із параметром 'user'

При написанні robots.txt необхідно пам'ятати, що у робота є розумне обмеження на його розмір. Занадто великі robots.txt (більше 32 Кб) вважаються такими, що повністю дозволяють, тобто розглядаються аналогічно:

User-agent: Yandex
Disallow:

Також такими, що дозволяють, вважаються robots.txt, які не вдалося завантажити (наприклад, унаслідок неправильних http-заголовків) або такі, що віддають 404 помилку.

Для перевірки правильності файлу robots.txt ви можете скористатися спеціальним on-line аналізатором. Див. опис «Аналізатор robots.txt».

Винятки

Деякі роботи Яндекса завантажують документи не для їх подальшої індексації, а для інших специфічних цілей. Для уникнення неумисного блокування власниками сайтів вони можуть не дотримуватися обмежувальних директив у robots.txt, що призначені для довільних роботів (User-agent: *). Також часткове ігнорування обмежень robots.txt певних сайтів можливе за наявності відповідної домовленості між компанією Яндекс і власниками цих сайтів.

Важливо: якщо такий робот завантажує документ, недоступний основному роботові Яндекса, цей документ ніколи не буде проіндексований і не потрапить у пошукову видачу.

Список роботів Яндекса, що не дотримуються загальних заборонних правил у robots.txt:

  • YaDirectFetcher завантажує цільові сторінки рекламних оголошень для перевірки їх доступності та уточнення тематики, що необхідно для їх розміщення в пошуковій видачі і на сайтах-партнерах.
  • YandexCalendar регулярно за ініціативою живих користувачів завантажує файли календарів, які часто розташовуються в заборонених для індексації каталогах.

  • YandexDirect завантажує цільові сторінки рекламних оголошень для перевірки їх доступності та уточнення тематики, що потрібно для їх розміщення в пошуковій видачі та на сайтах-партнерах;

  • YandexDirectDyn — робот генерації динамічних банерів.
  • YandexMobileBot завантажує документи для подальшого їх аналізу на наявність верстки, підходить під мобільні пристрої.
  • YandexAccessibilityBot завантажує сторінки для перевірки їх доступності користувачам.
  • YandexScreenshotBot робить знімок сторінки.
  • YandexMetrika — робот Яндекс.Метрики.
  • YandexVideoParser — індексатор Яндекс.Відео.

Якщо вас не влаштовує ця поведінка, можна обмежити їм доступ до свого сайту або його частини за допомогою директив спеціально для них, наприклад:

User-agent: YaDirectFetcher
Disallow: /
User-agent: YandexCalendar
Disallow: /*.ics$
Оцініть статтю
Дякуємо за ваш відгук!