Пошукові сервера завжди перед індексацією вашого ресурсу шукають в кореневому каталозі вашого домену файл з іменем «robots.txt» (http://www.mydomain.com/robots.txt). Цей файл повідомляє роботам (павукам-індексаторів), які файли вони можуть індексувати, а які ні.

Формат файлу robots.txt — особливий. Він складається з записів. Кожна запис складається з двох полів: рядка з назвою клієнтського додатка (user-agent), і однієї або кількох рядків, що починаються з директиви Disallow:

«:»

Robots.txt повинен створюватися в текстовому форматі Unix. Більшість гарних текстових редакторів вже вміють перетворювати символи перекладу рядка Windows Unix. Або ваш FTP-клієнт повинен вміти це робити. Для редагування не намагайтеся користуватися HTML-редактором, особливо таким, який не має текстового режиму відображення коду.

Поле User-agent

Рядок User-agent містить назву робота. Наприклад:

User-agent: googlebot

Якщо ви звертаєтеся до всіх роботам, ви можете використовувати символ підстановки «*»:

User-agent: *

Назви роботів ви можете знайти в логах вашого веб-сервера. Для цього виберіть тільки запити до файлу robots.txt. більшість пошукових серверів присвоюють короткі імена своїм павукам-індексаторів.

Поле Disallow:

Друга частина запису складається з рядків Disallow. Ці рядки — директиви для цього робота. Вони повідомляють роботу які файли і/або каталоги роботу неможливо індексувати. Наприклад наступна директива забороняє павукам індексувати файл email.htm:

Disallow: email.htm

Директива може містити назву каталогу:

Disallow: /cgi-bin/

Ця директива забороняє павукам-індексаторів лізти в каталог «cgi-bin».

В директивах Disallow можуть також використовуватися і символи підстановки. Стандарт диктує, що директива /bob заборонить павукам індексувати і /bob.html і /bob/index.html.

Якщо директива Disallow буде порожній, це означає, що робот може індексувати ВСІ файли. Як мінімум одна директива Disallow повинна бути для кожного поля User-agent, щоб robots.txt вважався вірним. Повністю порожній robots.txt означає те ж саме, як якщо б його не було взагалі.

Прогалини і коментарі

Будь-яка рядок robots.txt, починається з #, вважається коментарем. Стандарт дозволяє використовувати коментарі в кінці рядків з директивами, але це вважається поганим стилем:

Disallow: bob #comment

Деякі павуки не зможуть правильно розібрати дану рядок і замість цього зрозуміють її як заборона на індексацію ресурсів bob#comment. Мораль така, що коментарі мають бути на окремому рядку.

Пробіл на початку рядка дозволяється, але не рекомендується.

Disallow: bob #comment

Приклади

Наступна директива дозволяє всім роботам індексувати всі ресурси сайта, так як використовується символ підстановки «*».

User-agent: *
Disallow:

Ця директива забороняє всім роботам це робити:

User-agent: *
Disallow: /

Дана директива забороняє всім роботам заходити в каталоги «cgi-bin» і «images»:

User-agent: *
Disallow: /cgi-bin/
Disallow: /images/

Дана директива забороняє роботу Roverdog індексувати всі файли сервера:

User-agent: Roverdog
Disallow: /

Дана директива забороняє роботу googlebot індексувати файл cheese.htm:

User-agent: googlebot
Disallow: cheese.htm

Якщо вас цікавлять більш складні приклади, попутайтесь витягнути файл robots.txt з якого-небудь великого сайту, наприклад, CNN або Looksmart.

Доповнення до стандартів

Незважаючи на те, що були пропозиції щодо розширення стандарту і введення директиви Allow або обліку версії робота, ці пропозиції формально так і не були затверджені.

Похід у пошуках robots.txt

При перевірці нашого валідатора robots.txt (див. кінець статті), нам знадобилося знайти багато-багато «корми» для нього. Ми створили спайдер, який скачував з кожного знайденого сайту лише один файл robots.txt. Ми пройшлися по всіх посиланнях і доменам, занесеним до Open Directory Project. Так ми пройшлися 2.4 мільйонам URL і накопали файлів robots.txt приблизно на 75 кілобайт.

Під час цього походу ми виявили величезну кількість проблем з файлами robots.txt. Ми побачили, що 5% robots.txt поганий стиль, а 2% фалів були настільки погано написані, що жоден робот не зміг би їх зрозуміти. Ось список деяких проблем, виявлених нами:

Перевернутий синтаксис

Одна з найпоширеніших помилок — перевернутий синтаксис:

User-agent: *
Disallow: scooter

А має бути так:

User-agent: scooter
Disallow: *

Кілька директив Disallow в одному рядку:

Багато вказували кілька директив на одному рядку:

Disallow: /css/ /cgi-bin/ /images/

Різні павуки зрозуміють цю директиву по різному. Деякі проігнорують прогалини і зрозуміють директиву як заборона на індексацію каталогу /css//cgi-bin//images/. Або вони візьмуть лише один каталог (/images/ або /css/) і проігнорують все інше.

Правильний синтаксис такий:

Disallow: /css/
Disallow: /cgi-bin/
Disallow: /images/

Переклад рядка в форматі DOS:

Ще одна поширена помилка — редагування файлу robots.txt у форматі DOS. Незважаючи на те, що поширеність даної помилки багато павуків-идексаторы навчилися розуміти її, ми вважаємо це помилкою. Завжди редагуйте свій robots.txt в режимі UNIX і завантажуйте файл на сайт в режимі ASCII. Багато FTP-клієнти вміють при закачуванні в текстовому режимі переводити символи рядка DOS-формату в UNIX формат. Але деякі цього не роблять.

Коментарі в кінці рядка:

Згідно стандарту, це вірно:

Disallow: /cgi-bin/ #this bans robots from our cgi-bin

Але в недавньому минулому були роботи, які заковтували всю рядок як директиви. Зараз нам такі роботи невідомі, але виправданий ризик? Розміщуйте коментарі на окремому рядку.

Пробіли на початку рядка:

Disallow: /cgi-bin/

Стандарт нічого не говорить з приводу пропусків, але це вважається поганим стилем. І знову-таки, варто ризикувати?

Редірект на іншу сторінку помилку 404:

Досить поширене, коли веб-сервер помилку 404 (Файл не знайдено) видає клієнту особливу сторінку. При цьому веб-сервер не видає клієнту код помилки і навіть не робить редіректу. У цьому випадку робот не розуміє, що файл robots.txt відсутнє, замість цього він отримає html-сторінку з якимось повідомленням. Звичайно ніяких проблем тут виникнути не повинно, але чи варто ризикувати? Бог знає, як розбере робот html-файл, прийнявши його за robots.txt. щоб цього не відбувалося, наведіть хоча б порожній robots.txt в кореневий каталог вашого веб-сервера.

Конфлікти директив:

Щоб ви зробили на місці робота slurp, побачивши дані директиви?

User-agent: *
Disallow: /
#
User-agent: slurp
Disallow:

Перша директива забороняє всім роботам індексувати сайт, але друга директива дозволяє роботу slurp це робити. Так що ж все-таки повинен робити slurp? Ми не можемо гарантувати, що всі роботи зрозуміють ці директиви правильно. В даному прикладі slurp повинен проіндексувати весь сайт, а всі інші не повинні піти прямо з порогу.

Верхній регістр букв — поганий стиль:

USER-AGENT: EXCITE
DISALLOW:

Незважаючи на те, що стандарт байдуже ставиться до регістру літер robots.txt в іменах каталогів і файлів регістр все-таки важливий. Краще всього слідувати прикладів і у верхньому регістрі писати перші літери тільки в словах User і Disallow.

Список усіх файлів

Ще одна помилка — перерахування всіх файлів в каталозі:

Disallow: /AL/Alabama.html
Disallow: /AL/AR.html
Disallow: /Az/AZ.html
Disallow: /Az/bali.html
Disallow: /Az/bed-breakfast.html

Вищенаведений приклад можна замінити на:

Disallow: /AL
Disallow: /Az

Пам’ятайте, що початкова похила риска позначає, що мова йде про каталозі. Звичайно, ніщо не забороняє вам перерахувати парочку файлів, але ми мову ведемо про стилі. Цей приклад взятий з файлу robots.txt, розмір якого перевищував 400 кілобайт, в ньому було згадано 4000 файлів! Цікаво, скільки роботів-павуків, подивившись на цей файл, вирішили більше не приходити на цей сайт.

Є тільки директива Disallow!

Немає такої директиви Allow, є тільки Disallow. Цей приклад невірний:

User-agent: Spot
Disallow: /john/
allow: /jane/

Правильно буде так:

User-agent: Spot
Disallow: /john/
Disallow:

Немає відкриває похилої риси:

Що повинен зробити робот-павук з даною директивою:

User-agent: Spot
Disallow: john

Згідно стандартам ця директива забороняє індексувати файл «john» і каталог john». Але краще за все, для вірності, використовувати похилу риску, щоб робот міг відрізнити файл від каталогу.

Ще ми бачили, як люди записували в файл robots.txt ключові слова для свого сайту (подумати тільки — для чого?).

Бували такі файли robots.txt, які були зроблені у вигляді html-документів. Пам’ятаєте, у FrontPage робити robots.txt не варто.

Неправильно настроєний сервер

Чому раптом на запит robots.txt веб-сервер видає бінарний файл? Це відбувається в тому випадку, якщо ваш веб-сервер налаштований неправильно, або ви неправильно закачали на сервер сам файл.

Завжди після того, як ви завантажили файл robots.txt на сервер, перевіряйте його. Достатньо в броузері набрати простий запит:

http://www.mydomain.com/robots.txt

От і все що потрібно для перевірки.

Особливості Google:

Google — перший пошуковий сервер, який підтримує в директивах регулярні вирази. Що дозволяє забороняти індексацію файлів за їх розширенням.

User-agent: googlebot
Disallow: *.cgi

В поле user-agent вам слід використовувати ім’я «googlebot». Не ризикуйте давати таку директиву іншим роботам-павукам.

МЕТА-тег robots

МЕТА тег robots служить для того, щоб дозволяти або забороняти роботам, які приходять на сайт, індексувати цю сторінку. Крім того, цей тег призначений для того, щоб пропонувати роботам пройтися по всіх сторінок сайту і проіндексувати їх. Зараз цей тег набуває все більшого значення.

Крім того, цим тегом можуть скористатися ті, хто не може доступитися до кореневого каталогу сервера і змінити файл robots.txt.

Деякі пошукові сервери, такі як Inktomi наприклад, повністю розуміють мета-тег robots. Inktomi пройде по всіх сторінок сайту якщо значення даного тега «index,follow».

Формат мета-тега Robots

Мета тег robots поміщається в тег html-документа. Формат досить простий (регістр значення не грає):

Значення мета-тега robots

Даним мета-тегу можна присвоїти чотири варіанти значень. Атрибут content може містити наступні значення:

index, noindex, follow, nofollow

Якщо кілька значень, вони розділяються комами.

В даний час лише такі значення важливі:

Директива INDEX говорить роботу, що дану сторінку можна індексувати.

Директива FOLLOW повідомляє роботу, що йому дозволяється пройтися по посиланнях, присутнім на цій сторінці. Деякі автори стверджують, що при відсутності даних значень, пошукові сервера за замовчуванням діють так, як якщо б їм були дані директиви INDEX і FOLLOW. На жаль це не так по відношенню до пошукового сервера Inktomi. Для Inktomi значення за замовчуванням рівні «index, nofollow».

Отже, глобальні директиви виглядають так:

Індексувати всі = INDEX, FOLLOW

Не індексувати нічого = NOINDEX,NOFLLOW

Приклади мета-тега robots: