Привіт, хлопці. Як і обіцяв, сьогодні піде мова про тонкощі і особливості індексації сайтів в пошукових системах. Думки до написання даного поста мені навіяло розв’язна поведінка роботів Google – напевно, багато хто помітив, що Гугл індексує все, що йому тільки заманеться, не дивлячись на різні заборони, наприклад, в robots.txt.

Але ж всі ми хочемо зробити своїм сайтам «красиво», щоб кількість корисних існуючих (завантажених) роботом сторінок дорівнювала кількості проіндексованих пошуковою системою, а кількість сторінок додаткового індексу Google (supplemental) зводилося до мінімуму.

Так ось з-за «свавілля» роботів і починають, звідки ні візьмися з’являтися дублі сторінок, вилазити різні проблеми і все таке. Ну і я почав копати і вивчати детальніше.

Блокування та видалення сторінок з допомогою файлу robots.txt

Пропоную почати з розмови про файл robots.txt як найпопулярніший спосіб заборони індексації сторінок сайту.

Відразу наведу кілька витягів з довідки для вебмайстрів від Google:

Файл robots.txt обмежує доступ роботів, скануючих Інтернет для пошукових систем, до вашого сайту. Перед зверненням до сторінок сайту ці роботи автоматично шукають файл robots.txt, який забороняє їм доступ до певних сторінок.

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

Хоча Google сканує і не індексує вміст сторінок, заблокованих у файлі robots.txt URL-адреси, виявлені на інших сторінках в Інтернеті, як і раніше, можуть додаватися в індекс. В результаті URL сторінки, а також інші загальнодоступні відомості, наприклад текст посилань на сайт або заголовок з каталогу Open Directory Project (www.dmoz.org), можуть з’явитися в результатах пошуку Google.

Ось, остання витримка найцікавіша, з якої зрозуміло, що Google може ігнорувати директиви з файлу robots.txt. І, як показує практика, в індекс дуже часто потрапляють адреси сторінок, які заборонені в robots.txt навіть за умови відсутності на них зовнішніх/внутрішніх посилань.

До речі, керівництво Гугла варто було б додати, що не тільки «URL-адреси, виявлені на інших сторінках в Інтернеті», але і внутрішні посилання призводять до індексації заборонених сторінок, але про це трохи пізніше.

На диво, інформація про всіх адресах зберігається в Гуглі, мабуть, століттями. У мене є сайт, на якому вже років 5 тому змінилася CMS, а вметсе з нею і всі url, і старих адрес вже ніде немає, але Гугл пам’ятає ці адреси, якщо полазити дод. індекс 🙂

В Яндексі з цим справи трохи краще, всі сторінки, закриті через роботс, НЕ потрапляють в основний індекс Яндекса, однак роботом проглядаються і завантажуються, це наочно видно в панелі вебмастера, де, наприклад, можна спостерігати таке: Завантажено роботом — 178046 / Сторінок у пошуку — 72437. Зрозуміло, причина такої розбіжності аж у 100к сторінок не повністю наслідок заборони сторінок через robots.txt тут є і 404 помилки, наприклад, і інші неполадки сайту, які можуть виникати з різних причин.

Але це не страшно, ось витяг з керівництва для вебмайстрів від Яндекса:

В розділі «Виключені сторінки» відображаються сторінки, до яких звертався робот, але з тих чи інших причин прийняв рішення не індексувати їх. Зокрема, це можуть бути вже неіснуючі сторінки, якщо раніше вони були відомі роботу. Інформація про причини виключення з індексу зберігається протягом деякого часу, поки робот продовжує їх перевіряти. Після цього, якщо сторінки як і раніше недоступні для індексування і на них не ведуть посилання з інших сторінок, інформація про них автоматично видаляється з розділу «Виключені сторінки».
Наявність і кількість виключених сторінок не впливає на ранжирування сайту в пошуку за запитами.

За аналогією з Гуглом тут має місце вплив зовнішніх/внутрішніх посилань.

Резюмуючи вищесказане:

Для Яндекса robots.txt забороняє індексацію (в даному разі під цим словом маємо на увазі відображення в результатах пошуку) закритих сторінок, але і не забороняє їх завантаження роботами. Такі сторінки видно тільки власнику сайту в панелі вебмастера в розділі «Виключені сторінки».

Для Google robots.txt частково забороняє індексацію сторінок, робот їх завантажує і може відображати в додатковому індексі, закриті сторінки не відображаються в основному індексі, але всі вони доступні при вивченні додаткової видачі (supplemental). Наскільки це погано чи добре — не відомо — в мануалах Гугла такої інформації не знайшлося. Сподіваюся, що це ніяк не впливає на ранжирування в погану сторону.

Рекомендую до прочитання:

  • Мануал Яндекса «Використання robots.txt»
  • Мануал Google «Блокування та видалення сторінок з допомогою файлу robots.txt»

Плавно переходимо до наступного пункту про мета-тег robots.

Використання метатега robots для блокування доступу до сайту

Даний метод заборони індексації сторінок сайту зустрічається набагато рідше в повсякденному житті. Як наслідок відбувається це із-за що розробники більшості CMS просто не звертають на це уваги/забувають/забивають. І тоді відповідальність за поведінку роботів на сайті повністю лягає на плечі вебмайстрів, які в свою чергу обходяться найпростішим варіантом – robots.txt.

Але досвідчені вебмастера, які в темі особливостей індексації сайтів і поведінки роботів, використовують мета-тег robots.

І знову невелика витримка з керівництва від Google:

Щоб повністю виключити ймовірність появи контенту сторінки в індексі Google, навіть якщо на неї посилаються інші сайти, використовуйте мета-тег noindex. Якщо робот Googlebot почне перевіряти сторінку, то виявить мета-тег noindex і не стане відображати її в індексі.

Вселяє оптимізм, чи не правда? І ще:

Зверніть увагу: щоб побачити тег noindex, ми повинні просканувати вашу сторінку, тому існує невелика ймовірність, що пошуковий робот Googlebot не побачить мета-тег noindex і не відреагує на нього. Крім того, якщо ви заблокували цю сторінку з допомогою файлу robots.txt ми також не зможемо побачити цей тег.

Отже, всі сторінки, які ми хочемо заборонити до індексації, а так само виключити їх з індексу, якщо вони вже проіндексовані (наскільки я зрозумів, це стосується і дод. індексу Гугла), необхідно на всіх сторінках помістити метатег . Що ще більш важливо, ці сторінки не повинні бути закриті через robots.txt!

Трохи побуду кепом і розповім, які ще значення (content=”…”) може приймати мататег robots:

  • noindex – забороняє індексацію сторінки
  • nofollow – забороняє роботу слідувати по посиланнях на сторінці
  • index, follow – дозволяє роботу індексацію сторінок і перехід за посиланнями на цій сторінці
  • all – аналогічно попередньому пункту. За великим рахунком, даремна директива, еквівалентна відсутності самого метатега robots
  • none – заборона на індексацію та слідування за посиланнями, еквівалентно поєднанню noindex,nofollow
  • noarchive – заборона пошуковику виводити посилання на кеш сторінки (для Яндекса це «копія», для Google це «збережена копія»)

Так як в довідці Яндекса нижченаведені параметри не описані, то вони, швидше за все, там і не спрацюють. Так що ці параметри тільки для Google:

  • noimageindex – заборона на індексацію зображень на сторінці
  • nosnippet – заборона на висновок фрагменту в результатах пошуку (при цьому так само видаляється і збережена копія!)
  • noodp – заборона для Google на висновок в якості фрагменту опису з каталогу DMOZ

Начебто все, залишилося тільки сказати, що кількість прогалин, положення коми і регістр всередині content=”…” тут не грає ніякої ролі, але все ж для краси краще писати як годиться (з маленької літери, без пропусків і розділяючи атрибути коми).

Коротше кажучи, щоб повністю заборонити індексацію непотрібних сторінок і поява їх у пошуку необхідно на всіх цих сторінках розмістити метатег .

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

Одного разу я задавав службі підтримки Яндекса наступне питання:
1. Грає пробіл роль в коді . Тобто, чи є різниця як писати noindex, nofollow або noindex,nofollow — в першому випадку після коми йде пробіл, у другому випадку директиви без пробілу. Важливо це чи ні?
2. І друге питання. Якщо, припустимо, на сторінці з якоїсь причини вказані два метатега robots, наприклад, в такій послідовності:

Які правила застосує робот в цьому випадку?

І отримав следюущий відповідь:
1. Пробіл ролі не грає.
2. Послідовність ролі не грає. При наявності одночасно забороняє і дозволяє мета-тега буде врахований дозволяє.

Рекомендую до прочитання:

  • Мануал Google «Використання метатегів для блокування доступу до сайту»
  • Мануал Яндекса «Методи управління поведінкою робота»

Отже, у нас залишився останній нерозкритий питання, і він про внутрішніх посиланнях.

Вплив внутрішніх посилань на індексацію сайту

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

А що ж робити? При будь-якому варіанті заборони індексації посилань (rel=”nofollow”) та сторінок (robots.txt, meta robots), вага сайту просто втрачається, витікає на закриті сторінки.

Варіант №1. Більшість поширених CMS мають можливість використання спеціальних тегів (в DLE точно є, я сам цим дуже активно користуюся) при створенні шаблонів оформлення, які дозволяють регулювати висновок певної інформації. Наприклад, показувати текст тільки гостям або групі користувачів з певним id і т. д. Якщо таких тегів раптом ні, то напевно на допомогу прийдуть логічні конструкції (такі конструкції є в WordPress, а так само форумних движках IPB і vbulletin, знову ж таки, я сам користуюся цими можливостями), що представляють з себе найпростіші умовні алгоритми на php.

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

Але бувають такі моменти, що посилання не можна приховати або видалити, тому що вона потрібна, і потрібна відразу всім – гостям, користувачам… А от роботам не потрібна. Що робити?

Варіант №2. У рідкісних випадках (хоча останнім часом все частіше і частіше) буває необхідно, щоб посилання або навіть цілі блоки сайту були недоступні і невидны роботам, а ось людям відображалися і працювали в повній мірі, незалежно від груп і привілеїв. Ви вже, напевно, здогадалися, що я кажу про приховування контенту за допомогою JavaScript або AJAX. Як це робиться технічно, я не буду розписувати, це дуже довго. Але є чудовий пост Діми Dimox’а про те, як завантажити частину контенту за допомогою AJAX на прикладі WordPress (лінк). У прикладі розповідається про підвантаження цілого сайдбара, але таким же методом можна довантажити одну тільки посилання, наприклад. Загалом, трохи покопаетесь і розберетеся.

Так от, якщо хочеться якусь частину контенту роботам не показувати, то кращий вибір – JavaScript. А після того як провернеться всю технічну частину, перевірити це на працездатність допоможе чудовий плагін для FireFox під назвою QuickJava. Просто за допомогою плагіна вимкніть для браузера обробку яваскрипт і перезавантажте сторінку, весь динамічно подгружаемый контент повинен пропасти 😉
Але пам’ятайте, що тут теж треба знати міру!

І, до речі, ще парочка цікавих моментів, які необхідно знати:

Яндексу у індексації сайтів допомагає Яндекс.Метрика, яка автоматично пінг в індекс всі відвідані сторінки, на яких встановлений код Метрики. Але цю функцію можна відключити при одержанні коду лічильника, встановивши відповідну галочку.

Можливо як у індексації замішані Яндекс.Бар і збірка браузера Хром від Яндекса, але в цьому я не впевнений.

Але от для Гугла є інформація, що роль пошукового робота виконує сам браузер Google Chrome. Такі вже вони хитруни.

Так що, як бачимо, приховати інформацію від роботів майже неможливо, якщо не вживати спеціальних заходів.

Підсумки — або що зробити, щоб стало все круто?

Нарешті я можу підвести підсумок сьогоднішнього великого посту, і він буде коротким.

Щоб поліпшити якість індексації сайту, необхідно:

  • Приховати від гостей (до них відносяться і роботи) посилання, які їм не потрібні або не призначені.
  • Посилання, які не можна видалити або приховати від живих відвідувачів, варто приховати і виводити через JavaScript.
  • Якщо нічого з перерахованого неможливо або не виходить, то хоча б необхідно закрити посилання на непотрібні сторінки атрибутом rel=”nofollow”. Хоча користь від цього та сумнівна, але все ж…
  • Сторінки, які не повинні бути проіндексовані і не повинні потрапити в індекс пошукових систем, варто забороняти за допомогою метатега robots і параметра noindex:
  • Сторінки, що містять тег robots не повинні бути заборонені до індексації через robots.txt

Що дасть нам весь цей «улучшайзинг»:

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

Фуф, два дні (а точніше — дві ночі) писав цей пост і ніяк не міг дописати, але я це зробив! Тому чекаю ваших відгуків та коментарів.

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

Усім спасибі за увагу і до зустрічі!

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