19 февраля 2016 г.

Создание оптимального файла robots.txt для магазина OpenCart уже обсуждалось в одной из тем, здесь же будет представлено готовое решение по управлению этим файлом в режиме реального времени.

Данный модуль преследует следующие цели:
  1. Оперативное внесение изменений в файл robots.txt с целью быстрого исключения из поискового индекса конкретных страниц сайта.
  2. Предоставление для каждого робота только ему понятного свода правил с целью избежания конфликта с директивами других роботов.
  3. Отслеживание парсеров и сканеров с целью выдачи для них запрета на индексирование с последующей блокировкой на стороне сервера.

Первая цель может быть связана с большим количеством товаров, ссылки для которых могут быть настолько разными, что покрыть их все директивами типа Allow или Disallow довольно затруднительно. Речь идёт о запрете индексации конкретных товаров, в тексте описания которых встречаются низкорелевантные слова или сами товары настолько специфичны, что ограничены в распространении (фармацевтика, интимные товары и т.п.). Так или иначе у поисковых систем есть свои критерии, согласно которым сайт занимает своё временное место в результатах поисковой выдачи. Руководствуясь отчётами для веб-мастеров можно оперативно вносить необходимые изменения в содержимое файла robots.txt без доступа к файловой системе сайта.

Вторая цель касается совместимости директив между поисковыми роботами. Принято задавать их в отдельных секциях озаглавленных User-agent с соответствующим именем робота. Но нет гарантий того, что парсер робота наткнувшись на незнакомую директиву чужой секции не прекратит дальнейшую обработку файла, так и не дойдя до собственного блока директив. На самом деле это теория, однако на практике с этим пришлось всё же столкнуться. Хотя здесь больше подойдёт скрытие правил от "не роботов", чтобы не облегчать сбор информации на сайте, когда последние руководствуются сводом правил для роботов как картой сайта. 

Последнее интересует больше всего, т.е. третья цель. Сегодня мало людей строят свои проекты с нуля. Отчасти это связано как с недостатком финансирования, так и с творческим кризисом, т.е. с отсутствием оригинальных идей. Чтобы хоть что-то заработать, необходим хороший трафик, а хороший трафик будет там, где есть целевой контент. Создать контент за небольшой промежуток времени да ещё и с минимальными затратами возможно только за чужой счет с помощью сканеров и парсеров. Таких "посетителей" не жалуют и отправляют в черный список, поскольку ими игнорируются, в том числе, и правила поведения в robots.txt.

Обычно это подставные роботы, с чужими заголовками HTTP_USER_AGENT, но есть и вполне конкретные поисковые системы, например Majestic Bot (MJ12bot). Этому роботу запрещена полная индексация, но он всё равно обходит страницы. Поэтому в рамках общих "правил игры" оставляем ему доступ к файлу robots.txt, а к остальному сайту блокируем доступ на уровне сервера. Чтобы вычислять подобных роботов, необходимо регулярно собирать о них информацию, и в этом поможет OpenCart Robots Feed 2.0.

* * *

Ниже представлено описание административного интерфейса модуля, к большинству полей есть подсказки непосредственно в самом интерфейсе (см. скриншоты).

OpenCart Robots Feed
Рисунок 1. Настройки модуля OpenCart Robots Feed 2.0
Опция "Все правила в одном файле" задаёт формат вывода содержимого файла robots.txt. Если объединения нет, то для каждого робота будут выдаваться только его правила, путем сопоставления с HTTP_USER_AGENT, записью PTR или IP-адресом (см. Рисунок 4).

Опция "Срок действия правил" задаёт для файла robots.txt заголовок Expires (RFC 2616), на основе которого робот может принимать решение о периоде опроса файла. Если выставить нулевое значение, то, теоретически, перед каждым обходом сайта сначала должен быть запрошен robots.txt. Подобное поведение было замечено за поисковым роботом Google, запрещённые страницы довольно быстро исключались из поисковой выдачи.

OpenCart Robots Feed
Рисунок 2. Журнал запросов файла robots.txt

Все запросы можно регистрировать в соответствующем журнале (см. Рисунок 2), где кроме стандартной записи посещения веб-сервера будет отмечено определение посетителя как робота (Crawler) или гостя (Default). Если робот не определён или он подставной, то ему выдаются "Общие правила", озаглавленные директивой User-agent: * (см. Рисунок 3).

OpenCart Robots Feed
Рисунок 3. Общие правила для всех роботов

Общие правила, это правила поведения для роботов, которые не определены отдельно. Если индексирование разрешено всем и нет специфических настроек для отдельных роботов, то достаточно заполнить только эту вкладку. Для упрощения задания значений для директив может применяться "Шаблон", который автоматически заполняет поле "Значение". Список разделов в шаблоне формируется из справочника Layouts. Порядок следования директив можно сортировать в одноименной колонке щелчками мыши.

OpenCart Robots Feed
Рисунок 4. Список директив для робота YandexBot
На рисунке выше показан пример оформления директив для робота YandexBot. За основу взят оптимальный вариант файла robots.txt, который ранее обсуждался в связанной теме. В данном примере, кроме соответствия строки User-agent одноименному HTTP-заголовку, идёт также проверка на имя хоста (PTR), чтобы точно определить принадлежность робота. Также для определения можно использовать IP-адрес или его часть (с начала), когда робот поисковой системы не имеет записи PTR.

Если задано значение для поля "Родственный робот", то кроме блока директив основного робота будет также включен блок директив, в нашем случае, медиа-робота YandexImages. Это необходимо для того, чтобы основной робот учёл правила для своих родственных роботов, которые, как правило, файл robots.txt отдельно не запрашивают.

OpenCart Robots Feed
Рисунок 5. Список директив для робота Googlebot (с наследованием)
Очень удобная опция "Наследование правил", которая позволяет не задавать одни и те же правила, если они могут быть распространены и на других роботов (см. Рисунок 5).

OpenCart Robots Feed
Рисунок 6. Автодополнение адресов по названиям страниц
Ну и наконец возможность автодополнения значений по названиям страниц следующих разделов: товары, категории, производители, информация, файлы, новости (опционально). Автодополнение начинает работать если набираемый текст начинается с любого символа кроме прямого слеша. После выбора объекта из списка будет вставлена относительная ссылка-идентификатор или SEO URL, если объект имеет каноническое имя.

Примечание: Чтобы файл robots.txt воспринимался как модуль, в файле .htaccess необходимо добавить строчку RewriteRule ^robots.txt$ index.php?route=feed/robots [L] по аналогии с картой сайта.
* * *

Решение делится на две версии: базовую и полную. В базовой версии отсутствует контроль роботов по значениям PTR и IP-адресам; нет наследования правил; нет автодополнения адресов по названиям страниц. Состав архива представлен ниже.

Состав архива:
./admin/language/russian/feed/robots.php
./admin/language/english/feed/robots.php
./admin/controller/feed/robots.php
./admin/view/template/feed/robots.tpl
./catalog/controller/feed/robots.php

Условия приобретения: Модуль предоставляется по принципу одна лицензия - один сайт. Не допускается распространение модуля в той или иной сборке OpenCart без согласия автора или публикация его в общедоступном виде. Модуль возврату не подлежит!

Условия поддержки: Бесплатная поддержка в рамках базовой версии 2.x, в том числе предоставление возможных обновлений в течении года с момента приобретения через контактный электронный адрес.

Стоимость:
$8 (базовая версия)
$12 (полная версия)
Это решение может иметь продолжение, подписывайтесь на обновления и следите за комментариями. По вопросам приобретения просьба обращаться через страницу контактов.

0 comments:

Отправить комментарий

  • RSS
  • Twitter
  • Youtube