вторник, 3 декабря 2013 г.

Автоматическое управление Meta Robots и Canonical

Многие знают, что запрет на индексацию страниц через robots.txt сейчас работает не совсем корректно. Такие страницы все равно продолжают индексироваться с пометкой "Запрещено в robots.txt ". Еще одна проблема связанная с использованием robots.txt заключается в том, что после запрета эти страницы не удаляются из индекса поисковой системы.

Зная о этих недостатках файла robots.txt я давно рекомендую владельцам сайтов и разработчикам использовать в качестве инструментов управления индексацией мета тег robots и атрибут rel="canonical". Но по опыту я знаю что для многих возникают трудности с внедрением этих элементов в свой сайт.


Как один из вариантов решения всех этих проблем, предлагаю вам оценить свою наработку, скрипт — metarobots.php

Подключив скрипт к сайту Вебмастер может управлять тегами meta name="robots" и link rel="canonical" с помощью привычных команд и регуляторных выражений стандарта robots.txt

Подключение

Для подключения скрипта необходимо
  1. Сохранить в корневой каталог сайта файл со скриптом metarobots.php и создать файл metarobots.txt — этот файл будет содержать команды управления индексацией.
  2. Подключить php файл в блоке <head> на всех страницах сайта. (например через шаблон оформления).
  3. Готово!

Как это работает?

PHP скрипт анализирует команды из файла metarobots.txt и проставляет соответствующие теги.
В данный момент скрипт поддерживает следующие команды:

Команда Значение META ROBOTS Коментарии
Disallow: name="robots" content="noindex, nofollow" Полный запрет индексации.
Index: name="robots" content="index, nofollow" Разрешена индексация, запрещено следовать по ссылкам.
Follow: name="robots" content="noindex, follow" Запрещена индексация, разрешено следовать по ссылкам.
Noarchiv: name="robots" content="noarchive" Не показывать ссылку на сохраненную копию.
Nosnippet: name="robots" content="nosnippet" Не формировать снипет.
Noodp: name="robots" content="noodp" Не использовать описание из DMOZ для снипета.
Notranslate: name="robots" content="notranslate" Не предлагать перевод страницы.
Noimageindex: name="robots" content="noimageindex" Не индексировать изображения на странице.

Поддержка rel="canonical"

Для указания канонических страниц в metarobots.txt используется команда — Canonical:

После команды Сanonical необходимо указать два значения:
1. Регуляторное выражение в формате robots.txt с указанием выборки URL;
2. Якорь канонического URL; (Значения нужно разделять двоеточием.)

Что такое якорь канонического URL?
Давайте рассмотрим поддержку  Сanonical на примере.

Предположим мы имеем страницу вида:
http://www.seo-sign.com/2013/11/forwardseo-2013.html?showComment=13847

И хотим указать для нее канонической страницей:
http://www.seo-sign.com/2013/11/forwardseo-2013.html

В этом случае нам необходимо использовать команду:
Canonical: */2013/11/forwardseo-2013.html* : +html

В этом правиле:
*/2013/11/forwardseo-2013.html* — отбирает все страницы в которых встречается указанный набор символов.
+html — (Якорь канонического URL) показывает скрипту, что при формировании url канонической страницы необходимо отбросить от текущего URL все символы после "html"

Альтернативное правило для решение той же ситуации:
Canonical: */2013/11/forwardseo-2013.html* : -?showComment

В этом правиле:
*/2013/11/forwardseo-2013.html* — отбирает все страницы в которых встречается указанный набор символов.
-?showComment — (Якорь канонического URL) показывает скрипту, что при формировании url канонической страницы необходимо отбросить от текущего URL все символы после "?showComment", а также отбросить саму комбинацию символов "?showComment".

Якорь канонического URL — показывает скрипту какую часть URL использовать как канонический адрес а какую отбросить.

Пара стандартных шаблонов:

Делам все страницы с окончанием .html каноническими.
Canonical: *.html* : +html

Склеиваем страницы пейджинга в CMS Joomla.
Canonical: *?start=* : -?start=

Склеиваем страницы результатов сортировки в CMS Bitrix.
Canonical: *?sort=* : -?sort=

Советы по формированию правил запретов и канонических страниц

Для указания абсолютных адресов страниц в команде Canonical следует использовать URL без указания протокола. Протокол подставляется автоматически.

Команды в файле metarobots.txt выполняются последовательно при формировании каждой страницы. По этому стоит вначале использовать более точные правила направленные на небольшое количество страницы, а заканчивать файл стоит более общими командами. К примеру набор команд для CMS Joomla 1.5

Canonical: *index.php* : +/
Canonical: *.html* : +html
Disallow: *?*

Описание команд:
  • Первая команда склеивает все дубли главной страницы и страницы пагинации блога на главной странице;
  • Вторая команда канонизирует все страницы с расширением .html;
  • Запрещает к индексации все страницы с [?] в URL;

Приглашаю всех желающих принять участие в тестировании и работе над скриптом!


Исходный скрипт — metarobots.php

На любые вопросы отвечу в комментариях.

5 комментариев:

  1. Noarchiv: - для чего это использовать?

    ОтветитьУдалить
  2. Вот не плохая статейка на этот счет:
    http://www.seoschool.ru/search-engine-optimization-seo/when-why-and-how-to-use-noarchive.html

    Но его используют достаточно редко, на практике.

    ОтветитьУдалить
  3. Здравствуйте Артем. Почитал вашу статью!
    Спасибо за скрипт очень удачное решение! но возникли проблемы с интеграцией его в 1С Битрикс. По сути я не понял как работает выборка disallow по участкам кода. Т.е. по факту скрипт подменяет тег только в одном случае.Можно как то с вами еще связаться?
    Именно, что я не уловил синтаксис, и работает ли скрипт с ЧПУ.

    ОтветитьУдалить
    Ответы
    1. Он не заменяет тег, а просто добавляет мета тег robots. Этого достаточно чтобы запретить страницу от индексации целиком. Если есть вопросы пишите на почту artempost@ukr.net с описанием задачи постараюсь помочь.

      Удалить
  4. Хороший скрипт! Только возникли некоторые проблемы с подключением. Написал вам на почту сегодня, если будет время, ответьте пожалуйста)

    ОтветитьУдалить