Привет, друзья! Сегодня в очередной раз хотел бы затронуть вопрос управления индексацией сайта. Еще более продвинутый способ, нежели использование метатега 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" </FilesMatch> </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" </FilesMatch> |
Данный пример для всех файлов .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> |
Как и чем просмотреть заголовки X-Robots-Tag HTTP header?
Как же теперь проверить работает ли схема? Очень просто – нам необходим онлайн сервис или же плагин к браузеру.
Я использую плагин HttpFox для Firefox — очень рекомендую, помогает не только http-заголовки смотреть, но и всякие редиректы, ошибки и еще целую кучу всего.
Коли вы не сторонник плагинов или вообще не любите Firefox, то могу вам посоветовать сервис, которым лично я пользуюсь уже много лет — www.askapache.com.
Но опять же на просторах буржунета нашел очень крутую штуковину – js-букмарклет. Вот прямо наводите курсор мыши на эту ссылку и перетягиваете на панель закладок своего браузера. Точно работает в Firefox и Chrome – проверено. В браузере создастся закладка и на нее можно нажимать на любой открытой странице в браузере, появится окошко, показывающее всю нужную информацию.
Кстати, проверка xml-файла буркмаклетом в Firefox отлично работает, а вот в Хроме не хочет, но простые html страницы проверяет нормально.
В общем-то вот… Я вам рассказал о достаточно продвинутом способе управления индексацией сайта и показал, как это применить у себя. Это работает! Заголовки X-Robots-Tag Headers в связке с meta robots – это крутая вещь, используя их можно выкидывать на свалку файл robots.txt, вызывая тем самым удивление конкурентов, и имея при этом идеальную индексацию!
Что еще хотелось бы в заключение сказать в пользую данного метода:
- Самое больше преимущество заключается в том, что можно использовать регулярные выражения в .htaccess для создания масок и применения правил для определенных подходящих под маски путей к файлам.
- X-Robots-Tag можно применять к любым реальным файлам на сервере: статические html-страницы, php-скрипты, любые файлы, документы или медиа-контент.
- Правила не видно на странице или в исходном коде, о каких-то запретах можно узнать, только проверяя ответ сервера – но кто это делает?
- В теории, роботы поисковиков не должны загружать содержимое, когда обращаясь к нему получат в заголовке запрет на индексацию. Это негативный момент имеется в использовании метатега вместо robots.txt, когда в первом случае робот должен был сперва загрузить страницу, чтобы понять, что она запрещена к индексации.
Теперь точно все! Изучайте, пробуйте, используйте, задавайте вопросы.
До связи, друзья.
Хороший пост. Недавно спорил с одним известным сео блогером (не буду называть его имя, да и после этого случая я удалил его из ленты твиттера), он смеялся как так гугл проиндексировал его роботс, и зачем закрывать его с помощью X-Robots-Tag. Ну короче я ему разъяснил, он даже спасибо не сказал.
А пост, я думаю пригодится многим, данной информации в рунете мало.
Ой, простите, извините. Спасибо вам!
Ну и, кстати, если бы вы умели говорить (точнее — писать), вопросов бы и не возникло. А то вы же написали не о том, как закрыть индексацию файла, а о том, что этой командой мы закроем доступ к файлу, что вообще нафиг не надо.
Удачи :) хоть 20 раз отпишитесь от меня :)
Не знаю, может вы и продвинутые сеошники, но закрывать от индекса доки, картинки и роботс — имхо, бред.
Жаль что в посте нет примера как закрывать целые разделы, конечные УРЛы и УРЛы с переменными, пример был бы кстати =)
Тут есть небольшие оговорки, я сейчас добавлю в пост. Оказывается, применить заголовки можно только к реально существующим файлам, скажем, если 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 можно все эти проблемы решить.
Согласен с предыдущим комментарием. Не хватает конкретных образцов при закрытии урлов переменных категорий и шлака всякого. Что в роботсе можно закрыть */бла.бла/бла* и тогда все где это бла бла выпадает из индекса.
А тут понятно что можно картинки убрать из индекса, но тоже — зачем? ПДФ убирать? Зачем, если его можно оптимизировать под запросы? Док убирать? Нафига*?))) Все это лишнее.
А вот убрать из индекса роботс и сайтмап это круто, это знания высшей касты сеошников.
Не забываем что в Поиске появился третий игрок, уже дающий качественный трафик — Mail.ru
А у него тоже всё сложно, для него например robots.txt — закон, а мета-тег robots несёт рекомендательный характер, интересно будет ли он работать над поддержкой X-Robots
А что тут забывать-то? Поисковые роботы Mail.ru такие же как и все остальные, следуют правилам из robots.txt, прекрасно понимают мета-теги. А вот X-Robots-Tag не понимают. Судя по официальным мануалам, поведение точно такое же как и у роботов Яндекса, даже директиву Host: в файле robots.txt поддерживают :)
АлаичЪ, интересная фишечка. Когда вижу уведомление на почте о новой статье, заранее знаю, что будет только полезная информация, без воды и утомительной рекламы. Хотелось бы выразить благодарность автору блога.
Спасибо за весьма познавательную статью!
Да, давно видела это способ. Я его и так и сяк покрутила, но прикручивать не стала.
Вот вопрос, который меня заинтересовал: если закрыть от индексации картинки, то они не будут доступны и в Google.Картинках, так? Какой толк в этом тогда?
NMitra, не обязательно картинки )) просто это пример такой)) наглядный и доходчивый))
Это я понимаю, но я видела такой же пример на англоязычном сайте, затрудняюсь уже ответить каком. Так вот: зачем пример, если он не имеет практической направленности?
Да, если закрыть любой контент (в т.ч. картинки, то их роботы Гугла не будут индексировать и выдавать в результатах ни при каких условиях). Зачем это надо — каждый для себя сам решает.
Кстати, пример с картинками как раз из официального руководства Google для вебмастеров. Вопрос "зачем?" лучше туда и задавать :)
Закрывать от индексации следует только "вредный" контент, а какой смысл прятать картинки от поисковика? Тогда вы теряете посетителей, которые могут приходить на эти картинки.
Что вы привязались к этим картинкам? Для примера показали вам как закрывать любые типы файлов, а вы уже возмущаетесь.
Хотя... Уверен что найдутся люди, которые закроют и картинки... Мол Алаичъ сказал... картинки в топку=)
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.
Пример на PHP, там где будет встречаться /post/ в URL, везде будет этот header.
Nginx в location
Уточните,пожалуйста,в какой файл php вставлять это код?
Вставляй в index.php или в любой другой — пока не заработает там где вам нужно :)
Яху и Гугл поддерживают HTTP заголовок? А Яндекс может тоже будет?
Да прикольные фишки особенно с закладкой которая в окошке инфу о сайте показывает!
Ввиду Панд и Пингвинов, которые сегодня активно штормят сайты, эта статья, да и закрытие страниц от индекцсации в целом — очень актуальный вопрос.
Спасибо, что освещаете тему!
Статья интересная, даже очень) Конечно не верится, что роботает, точнее не верилось, круто будем пробывать. Вот только с яндексом...то что не поддерживает даный метод... это очень жаль. Надеемся на лучшее. Спасибо за пост.
А есть ли возможность запретить индексировать определенную директорию (папку) сайта посредством x-robots tags + .htaccess Заранее благодарю за помощь
В посте затронут тег "noarchive", а если у меня на сайте нигде он не прописан, сайт вообще на php, а пишет "Отсутствует сохранённая копия в Яндексе!"
Есть полезная информация как с этим бороться?
Созраненная копия отсутствует в Яндексе, но это не значит, что это причина каких-то проблем на сайте. Можно проверить, например, в Гугле еще. Да и ничего страшного нет в том, что копия отсутствует.
Спасибо за статью,очень полезная.В сатье вы предлагаете для просмотра заголовков HTTP header,планин HttpFox для Firefox,а для Opera есть что нибудь подобное?
Добрый день !!! Спасибо за инфо,но подскажите,как закрыть раздел "распечатать — он же print"?
Очень часто встречаю в практике случаи, когда гугл кроме картинок на страницах сайта, также индексирует и картинки как отдельные страницы. Причем эти страницы не имеют ни дизайна, ни верстки, они генерируютя CMS. Сами же эти каримнки прекрасно индексируются на тех страницах, на которых онм рахмещены, вместе с контентом. Так вот именно для таких случаев и необходимо закрывать страницы картинок. Спасибо за статью! Очень нформативная, кстати, при помощи этого способа хочу попробовать избавиться от страниц оставшихся в индексе гугла после вируса. А то там куча страниц годами висит, надо проверить.
Спасибо автору за статью. Достаточно интересный подход, тем более после последних обновлений гугла. Много всего изменилось, возникли серьезные проблемы с map у многих пользователей. При этом гугл и сам просит закрывать тегом noindex map сайта. Так что примерчики очень даже полезны.
Что это за обновление, где Гугл просит что-то от роботов закрывать? Можно ссылку?
Что ты за дичь написал?! Где гугл просит закрывать map? Какой еще map? Sitemapxml ? Наверно грибов обьелся
Указаны методы Htaccess для Apache, но в самой же статье примеры заголовков на скринах где указан сервер Nginx — это не сработает там, там вообще нет файла Htaccess. Хорошо бы примеры кода для Nginx — он уже сравнялся с апач по популярности. thnx