X-Robots-Tag HTTP header – продвинутый способ управления индексацией содержимого сайта

Использование и применение X-Robots-Tag HTTP header Привет, друзья! Сегодня в очередной раз хотел бы затронуть вопрос управления индексацией сайта. Еще более продвинутый способ, нежели использование метатега robots, по сути, являющийся его аналогом, но работающий не на уровне страниц, а на уровне заголовков header. Речь пойдет о X-Robots-Tag HTTP header – метод не нов (Google рассказали о нем ровно 6 лет назад, летом 2007 года), но почему-то мало кто знает об этом способе, а людей пользующихся я вообще не встречал пока.

X-Robots-Tag штука очень полезная, а главное простая в использовании, надеюсь, после моего поста вы это поймете и будете использовать в своей практике.

Для начала нам необходимо вспомнить мой пост про сравнение использования robots.txt и мета-тега robots — настоятельно рекомендую прочитать, но если совсем лень, то ниже я приведу основные тезисы. Если с Яндексом у нас нет проблем, то основной причиной отказа от robots.txt стало вольное поведение Гугла, который, не смотря на запреты, индексирует и выкладывает в выдачу ссылки на запрещенные страницы. Мета-тег robots позволял решить данную проблему и запрещенные им страницы сразу же прекращали индексироваться и фигурировать в выдаче. И все бы прекрасно, но есть один недостаток – мета-тег можно указать только для html-документа. Т.е. если необходимо скрыть от посторонних глаз какие-то документы (doc, pdf, txt, xml и т.д.), аудио или видео, да вообще все что угодно – мета-тег применить не удастся и единственным выходом является использование файла robots.txt. Мало того, что содержимое файла robots.txt может просмотреть любой человек, так, повторюсь, любой документ или страница, запрещенные в robots.txt, могут появиться в выдаче Google при наличии на них внешней ссылки.

Но выход есть — X-Robots-Tag. Это тот же самый метатег, но действующий на уровне заголовков сервера и распространяющийся на любые типы содержимого, при этом директивы такие же как у мета-тега robots.

Потерпите, еще немного теории, а потом перейдем к практике и применению. Стоит освежить в памяти перечень возможных директив и их описание:

  • all — означает, что никаких ограничений на индексацию нет. Соответствует обычному поведению роботов как при отсутствии каких-либо указаний;
  • noindex — не показывать страницу в результатах поиска, а так же не показывать кэшированную копию;
  • nofollow — не переходить по ссылкам на странице;
  • none — эквивалентно одновременному использованию директив noindex, nofollow;
  • noarchive — не кешировать и не показывать ссылку на копию в результатах поиска;
  • nosnippet — не показывать сниппет в результатах поиска;
  • noodp — не использовать информацию из каталога DMOZ для формирования заголовка и сниппета в выдаче;
  • notranslate — не предлагать перевод страницы в результатах поиска;
  • noimageindex — не индексировать изображения на странице;
  • unavailable_after: [RFC-850 date/time] — не показывать страницу в результатах поиска после определенной даты и времени. Формат даты и времени необходимо указывать в определенном формате — RFC 850.

Как применить и отдавать в заголовках сервера X-Robots-Tag

С мета-тегами все довольно понятно, для их применения достаточно в заголовок html-страницы <head> поместить соответствующий код. Кстати, напоминаю, что у меня есть два отличных руководства по работе с метатегами для WordPress, а так же для DLE. Для DLE я даже создал специальный модуль DonBot, чтобы ничего не приходилось править руками.

Так вот, для применения X-Robots-Tag существует два варианта: при помощи php и при помощи .htaccess. PHP вариант я не хочу и не буду рассматривать, если вы программист, то вам и так известно как отправлять заголовки, а подробности с легкостью гуглятся. А вот работать с .htaccess я вас уже как-то научил, этот вариант понятнее и проще, любой новичок сможет его использовать!

Тут важно сделать оговорку, что способы на php и через htaccess все же разные. Например, реальные файлы на сервере (любые документы, картинки, статические файлы) стоит закрывать при помощи .htaccess, в то время, как динамически генерируемые страницы (а именно таковыми являются страницы на любой CMS) возможно закрыть только отдавая заголовки при помощи php.

Так как все решения на php индивидуальны для каждой CMS, то говорить об этом безотносительно конкретных случаев смысла просто нет. Поэтому мы поговорим о работе с серверными методами в .htaccess.

Как и раньше, работаем с тем .htaccess, который лежит в корне сайта, рядом с index.php. Код можно добавлять в самый конец файла.
Итак, несколько примеров:

Добавим X-Robots-Tag noindex, nofollow для всех .PDF файлов на сайте:

<FilesMatch "\.pdf$">
	Header set X-Robots-Tag "noindex,nofollow"
</FilesMatch>

Директива <FilesMatch> позволяет нам работать с регулярными выражениями для поиска совпадений в именах файлов. В данном примере мы ищем по маске все файлы, оканчивающиеся на .pdf, а метка $ как раз обозначает конец строки.

Давайте закроем от индексации файлы с расширениями .doc, .txt и .xls:

<IfModule mod_headers.c>
<FilesMatch "\.(doc|txt|xls)$">
	Header set X-Robots-Tag "noindex"
</Files>
</IfModule>

В данном примере используется условие <IfModule mod_headers.c>, которое проверяет, активирована ли на сервере возможность работы с заголовками. Можно и не ставить это условие, лично я не использую, ведь я и так знаю, что у меня все включено. Далее в регулярном выражении у нас используется группировка (doc|txt|xls), значит, мы ищем любое совпадение из перечисленного.

<FilesMatch "\.(doc|pdf|swf)$">
	Header set X-Robots-Tag "unavailable_after: 29 Jul 2013 13:54:07 GMT"
	Header set X-Robots-Tag "noarchive,nosnippet"
</Files>

Данный пример для всех файлов .doc, .pdf и .swf будет сообщать поисковому роботу, что файлы нельзя кешировать, отображать для них сниппет, а так же, что после указанного времени (указывается GMT 0, так что не забывайте внести поправку для своего региона) 29 июля 2013 года документ необходимо удалить из выдачи.

<FilesMatch "\.(png|jpe?g|gif)$">
	Header set X-Robots-Tag "noindex"
</FilesMatch>

Еще один пример работы с регулярками. В данном случае стоит запрет на индексацию файлов изображений в формате .png, .jpeg, .jpg, .gif.

<FilesMatch "robots.txt">
	Header set X-Robots-Tag "noindex"
</FilesMatch>

Казалось бы – а зачем закрыть от индексации файл robots.txt! Я подсмотрел этот интересный пример на буржуйском блоге, поводом к закрытию файла послужило это. В большей степени я привожу этот пример ради шутки, уж очень интересные файлы robots.txt у гигантов, типа, google, wikipedia, facebook и т.д. – посмотрите, комментарии в коде почитайте :)

А теперь давайте перейдем еще ближе к практике. На своем тестовом сайте я создал файл карты сайта, назвал его map.xml и поместил в корне по адресу http://vibiraem.info/map.xml

Чтобы на деле убедиться, что все, что я сказал выше, работает, я добавил в файл .htaccess следующий код:

<FilesMatch "^map.xml">
	Header set X-Robots-Tag "noindex"
</FilesMatch>

Как и чем просмотреть заголовки HTTP header?

Как же теперь проверить работает ли схема? Очень просто – нам необходим онлайн сервис или же плагин к браузеру.

Я использую плагин HttpFox для Firefox — очень рекомендую, помогает не только http-заголовки смотреть, но и всякие редиректы, ошибки и еще целую кучу всего.

Проверка http заголовков при помощи плагина HttpFox для Firefox

Коли вы не сторонник плагинов или вообще не любите Firefox, то могу вам посоветовать сервис, которым лично я пользуюсь уже много лет — www.askapache.com.

Проверка http заголовков при помощи сервиса www.askapache.com

Но опять же на просторах буржунета нашел очень крутую штуковинуjs-букмарклет. Вот прямо наводите курсор мыши на эту ссылку и перетягиваете на панель закладок своего браузера. Точно работает в Firefox и Chrome – проверено. В браузере создастся закладка и на нее можно нажимать на любой открытой странице в браузере, появится окошко, показывающее всю нужную информацию.

Проверка http заголовков при помощи js-bookmarklet

Кстати, проверка xml-файла буркмаклетом в Firefox отлично работает, а вот в Хроме не хочет, но простые html страницы проверяет нормально.


В общем-то вот… Я вам рассказал о достаточно продвинутом способе управления индексацией сайта и показал, как это применить у себя. Это работает! Заголовки X-Robots-Tag Headers в связке с meta robots – это крутая вещь, используя их можно выкидывать на свалку файл robots.txt, вызывая тем самым удивление конкурентов, и имея при этом идеальную индексацию!

Но тут есть существенная печалька — Яндекс до сих пор не поддерживает данный метод, хотя народ давно уже просит. Так что полностью без robots.txt все же не обойтись, но можно использовать User-agent: Yandex, чтобы не затрагивать Google.

Что еще хотелось бы в заключение сказать в пользую данного метода:

  • Самое больше преимущество заключается в том, что можно использовать регулярные выражения в .htaccess для создания масок и применения правил для определенных подходящих под маски путей к файлам.
  • X-Robots-Tag можно применять к любым реальным файлам на сервере: статические html-страницы, php-скрипты, любые файлы, документы или медиа-контент.
  • Правила не видно на странице или в исходном коде, о каких-то запретах можно узнать, только проверяя ответ сервера – но кто это делает?
  • В теории, роботы поисковиков не должны загружать содержимое, когда обращаясь к нему получат в заголовке запрет на индексацию. Это негативный момент имеется в использовании метатега вместо robots.txt, когда в первом случае робот должен был сперва загрузить страницу, чтобы понять, что она запрещена к индексации.

Теперь точно все! Изучайте, пробуйте, используйте, задавайте вопросы.

До связи, друзья.

С уважением, Александр Алаев
 
Ерунда и баянЪ!Зачет! Плюсую!
+7
 
Оптимизация сайта

Профессиональный технический аудит и оптимизация вашего сайта.
Тот самый необходимый «фундамент» для успешного продвижения.

от 10 000 руб.
Продвижение сайта

Комплексный подход к решению поставленных задач, будь то достижение заветных позиций в ТОП 10 или увеличение трафика на сайт. В стоимость уже включены полный технический аудит и оптимизация сайта.

от 15 000 руб.
Консультация

У вас недостаточно знаний?
Нужен ответ на ряд вопросов?
Хотите узнать мнение эксперта?
Вы задаете вопрос — я на него отвечаю!

1 500 руб./час
 
Получай новости блога АлаичЪ'а на e-mail:
 
Другие посты из категории SEO:
Что нового на форуме:
  1. Alex (19 комм.)

    Хороший пост. Недавно спорил с одним известным сео блогером (не буду называть его имя, да и после этого случая я удалил его из ленты твиттера), он смеялся как так гугл проиндексировал его роботс, и зачем закрывать его с помощью X-Robots-Tag. Ну короче я ему разъяснил, он даже спасибо не сказал.

    А пост, я думаю пригодится многим, данной информации в рунете мало.

    Ответить
    • Nodar Giorgadze (2 комм.)

      Ой, простите, извините. Спасибо вам!

      Ответить
    • Nodar Giorgadze (2 комм.)

      Ну и, кстати, если бы вы умели говорить (точнее — писать), вопросов бы и не возникло. А то вы же написали не о том, как закрыть индексацию файла, а о том, что этой командой мы закроем доступ к файлу, что вообще нафиг не надо.

      Удачи :) хоть 20 раз отпишитесь от меня :)

      Ответить
  2. staiki (3 комм.)

    Не знаю, может вы и продвинутые сеошники, но закрывать от индекса доки, картинки и роботс — имхо, бред.

    Ответить
  3. Agent_007_007 (1 комм.)

    Жаль что в посте нет примера как закрывать целые разделы, конечные УРЛы и УРЛы с переменными, пример был бы кстати =)

    Ответить
    • АлаичЪ

      Тут есть небольшие оговорки, я сейчас добавлю в пост. Оказывается, применить заголовки можно только к реально существующим файлам, скажем, если CMS создает какие-то страницы, то указать до них адрес нельзя будет, точнее из этого ничего не выйдет. И наоборот, указав и запретив индексацию файла index.php, тег noindex пропишется для всех страниц сайта.

      Но, что касается url с переменными, то если это url вида site.ru/product.php?product_id=6881, то можно прописать noindex для файла product.php, и тогда запрет добавится ко всем страницам, начинающимся с product.php.

      И при этом, даже если на сайте работает ЧПУ и из указанного выше url формируется такой site.ru/product/6881, то и для этого адреса сервер будет отдавать noindex, т.к. это url изначально формируется скриптом product.php.

      Все сложно, да?

      PS Это все относительно метода по мотивам .htaccess. Скорее всего, при помощи php можно все эти проблемы решить.

      Ответить
  4. Алексей (4 комм.)

    Согласен с предыдущим комментарием. Не хватает конкретных образцов при закрытии урлов переменных категорий и шлака всякого. Что в роботсе можно закрыть */бла.бла/бла* и тогда все где это бла бла выпадает из индекса.

    А тут понятно что можно картинки убрать из индекса, но тоже — зачем? ПДФ убирать? Зачем, если его можно оптимизировать под запросы? Док убирать? Нафига*?))) Все это лишнее.

    А вот убрать из индекса роботс и сайтмап это круто, это знания высшей касты сеошников.

    Ответить
  5. Yeti (4 комм.)

    Не забываем что в Поиске появился третий игрок, уже дающий качественный трафик — Mail.ru

    А у него тоже всё сложно, для него например robots.txt — закон, а мета-тег robots несёт рекомендательный характер, интересно будет ли он работать над поддержкой X-Robots

    Ответить
    • АлаичЪ

      А что тут забывать-то? Поисковые роботы Mail.ru такие же как и все остальные, следуют правилам из robots.txt, прекрасно понимают мета-теги. А вот X-Robots-Tag не понимают. Судя по официальным мануалам, поведение точно такое же как и у роботов Яндекса, даже директиву Host: в файле robots.txt поддерживают :)

      Ответить
  6. Andrey (1 комм.)

    АлаичЪ, интересная фишечка. Когда вижу уведомление на почте о новой статье, заранее знаю, что будет только полезная информация, без воды и утомительной рекламы. Хотелось бы выразить благодарность автору блога.

    Ответить
  7. d.j.starter (31 комм.)

    Спасибо за весьма познавательную статью!

    Ответить
  8. NMitra (23 комм.)

    Да, давно видела это способ. Я его и так и сяк покрутила, но прикручивать не стала.

    Вот вопрос, который меня заинтересовал: если закрыть от индексации картинки, то они не будут доступны и в Google.Картинках, так? Какой толк в этом тогда?

    Ответить
    • d.j.starter (31 комм.)

      NMitra, не обязательно картинки )) просто это пример такой)) наглядный и доходчивый))

      Ответить
      • NMitra (23 комм.)

        Это я понимаю, но я видела такой же пример на англоязычном сайте, затрудняюсь уже ответить каком. Так вот: зачем пример, если он не имеет практической направленности?

        Ответить
        • АлаичЪ

          Да, если закрыть любой контент (в т.ч. картинки, то их роботы Гугла не будут индексировать и выдавать в результатах ни при каких условиях). Зачем это надо — каждый для себя сам решает.

          Кстати, пример с картинками как раз из официального руководства Google для вебмастеров. Вопрос "зачем?" лучше туда и задавать :)

          Ответить
  9. Надежда (2 комм.)

    Закрывать от индексации следует только "вредный" контент, а какой смысл прятать картинки от поисковика? Тогда вы теряете посетителей, которые могут приходить на эти картинки.

    Ответить
    • Axel (63 комм.)

      Что вы привязались к этим картинкам? Для примера показали вам как закрывать любые типы файлов, а вы уже возмущаетесь.

      Хотя... Уверен что найдутся люди, которые закроют и картинки... Мол Алаичъ сказал... картинки в топку=)

      Ответить
  10. onchannel.net (1 комм.)

    i have my website hosted on nginx and i don`t have htaccess. how else can implement these settings?

    Ответить
    • АлаичЪ

      My server is on nginx too, but nothing prevents me to use htaccess file.

      Another way to apply X-Robots-Tag is PHP, you have to find a solution by yourself.

      Ответить
  11. DJ-X (2 комм.)

    Пример на PHP, там где будет встречаться /post/ в URL, везде будет этот header.

    if (strstr($_SERVER['REQUEST_URI'], '/post/'))
    {
    header('X-Robots-Tag: noindex,nofollow');
    }

    Nginx в location

    if ($request_uri ~* "/post/|/best/|\.html" ) {
    add_header X-Robots-Tag "noindex,nofollow";
    }
    Ответить
    • Галина (1 комм.)

      Уточните,пожалуйста,в какой файл php вставлять это код?

      Ответить
      • DJ-X (2 комм.)

        Вставляй в index.php или в любой другой — пока не заработает там где вам нужно :)

        Ответить
  12. Марина (6 комм.)

    Яху и Гугл поддерживают HTTP заголовок? А Яндекс может тоже будет?

    Ответить
  13. Станислав (1 комм.)

    Да прикольные фишки особенно с закладкой которая в окошке инфу о сайте показывает!

    Ответить
  14. Livill (3 комм.)

    Ввиду Панд и Пингвинов, которые сегодня активно штормят сайты, эта статья, да и закрытие страниц от индекцсации в целом — очень актуальный вопрос.

    Спасибо, что освещаете тему!

    Ответить
  15. Nester (3 комм.)

    Статья интересная, даже очень) Конечно не верится, что роботает, точнее не верилось, круто будем пробывать. Вот только с яндексом...то что не поддерживает даный метод... это очень жаль. Надеемся на лучшее. Спасибо за пост.

    Ответить
  16. Володя (2 комм.)

    А есть ли возможность запретить индексировать определенную директорию (папку) сайта посредством x-robots tags + .htaccess Заранее благодарю за помощь

    Ответить
  17. Скив (6 комм.)

    В посте затронут тег "noarchive", а если у меня на сайте нигде он не прописан, сайт вообще на php, а пишет "Отсутствует сохранённая копия в Яндексе!"

    Есть полезная информация как с этим бороться?

    Ответить
    • АлаичЪ

      Созраненная копия отсутствует в Яндексе, но это не значит, что это причина каких-то проблем на сайте. Можно проверить, например, в Гугле еще. Да и ничего страшного нет в том, что копия отсутствует.

      Ответить
  18. kolver (1 комм.)

    Спасибо за статью,очень полезная.В сатье вы предлагаете для просмотра заголовков HTTP header,планин HttpFox для Firefox,а для Opera есть что нибудь подобное?

    Ответить
  19. Николай (1 комм.)

    Добрый день !!! Спасибо за инфо,но подскажите,как закрыть раздел "распечатать — он же print"?

    Ответить
Оставь комментарий или спроси через Twitter →

· Малоинформативные комментарии или комментарии, не содержащие вопрос, удаляются.
· В поле URL оставляйте ссылку только на свой сайт/блог. Эта ссылка для админа, посетители ее не увидят.
· Любой html-код отображается в виде текста, любые ссылки неактивны.
· Для спаммеров - БЛОГ НЕ DOFOLLOW!!!