Привіт, друзі! Сьогодні в черговий раз хотів би торкнутися питання управління індексацією сайту. Ще більш просунутий спосіб, ніж використання метатега 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-сторінки помістити відповідний код. До речі, нагадую, що у мене є два відмінних керівництва по роботі з метатегами для 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>

Header set X-Robots-Tag “noindex,nofollow”

Директива дозволяє нам працювати з регулярними виразами для пошуку збігів в іменах файлів. У даному прикладі ми шукаємо по масці всі файли, що закінчуються на .pdf, а мітка $ якраз позначає кінець рядка.

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

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

Header set X-Robots-Tag “noindex”

У даному прикладі використовується умова , яка перевіряє, чи активована на сервері можливість роботи з заголовками. Можна і не ставити це умова, особисто я не використовую, адже я і так знаю, що у мене все включено. Далі в регулярному виразі у нас використовується угруповання (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>

Header set X-Robots-Tag “unavailable_after: 29 Jul 2013 13:54:07 GMT”
Header set X-Robots-Tag “noarchive,nosnippet”

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

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

Header set X-Robots-Tag “noindex”

Ще один приклад роботи з регулярками. В даному випадку стоїть заборона на індексацію файлів зображень у форматі .png .jpeg, .jpg, .gif.

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

Header set X-Robots-Tag “noindex”

Здавалося б – а навіщо закрити від індексації файл 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>

Header set X-Robots-Tag “noindex”

Як і чим переглянути заголовки HTTP header?

Як же тепер перевірити чи працює схема? Дуже просто – нам необхідний онлайн сервіс або ж плагін до браузера.

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

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

Але знову ж на теренах буржунете знайшов дуже круту штуку – js-букмарклет. Ось прямо наводите курсор миші на посилання і перетягує на панель закладок свого браузера. Точно працює в Firefox і Chrome – перевірено. У браузері створиться закладка і на неї можна натискати на будь-якій відкритій сторінці в браузері, з’явиться віконце, яке показує всю потрібну інформацію.

До речі, перевірка 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 коли в першому випадку робот повинен був спершу завантажити сторінку, щоб зрозуміти, що вона заборонена до індексації.

Тепер точно все! Вивчайте, пробуйте, використовуйте, задавайте питання.

До зв’язку, друзі.

З повагою, Олександр Алаєв