platieshop2013good.ru
Главная Тренажер для улучшенной осанки

Какое зрение 0,2 0,9


режим питания при болезни печени

Правильный robots.txt для DLE Привет, друзья. Сколько раз вы меня спрашивали, как составить правильный robots.txt для DLE – вот честно, надоели уже! Решил написать пост на эту тему, чтобы раз и навсегда исключить все подобные вопросы. Хотя, я уверен, выводы для вас будут неожиданными :)

Краткая суть поста – чем меньше файл robots.txt тем лучше и качественнее сайт, и это относится не только к DLE, но вообще к любому движку или сайту.

Я вам еще раз расскажу, почему и для чего нужен файл robots.txt и директивы в нем, а так же почему меньше директив это показатель качества.

Знаете что такое идеальный сайт? Это сайт, каждая страница которого несет пользу для посетителя и эту страницу не стыдно показать поисковику, потому что она ему понравится и будет высоко ранжироваться.

А для чего придумали robots.txt? Для того чтобы указывать поисковику какие страницы посещать и индексировать можно, а какие нельзя. Закрывая от индексации какие-то страницы (или даже разделы) вы тем самым признаете, что эти страницы некачественные или ненужные по различным причинам. Чаще всего запрет используется для исключения дублей страниц и технической информации. К сожалению, реальность такова, что сегодня 99% сайтов имеющих файл роботс закрывают с его помощью как раз такие страницы.

Обсуждение к данному посту закрыто по причине выхода более удобного и элегантного решения — модуль DonBot.
DonBot позволит без правок ядра движка добавить необходимые правила, при этом есть несколько рекомендуемых настроек для достижения наилучших результатов.
Тем не менее, описанные ниже правки остаются актуальными для всех версий DLE 9.x, 8.x и 7.x!

Так вот еще раз – идеальный сайт – это когда бесполезных страниц нет и закрывать нечего. Но CMS, какими бы классными они не были, все равно создают для нас «неожиданности» и приходится выкручиваться. Приходим к выводу – без robots.txt не обойтись…НО!

Временно переключимся — смотрите на идеальный robots.txt для DLE

User-agent: Disallow: /engine/ Host: site.ru Sitemap: http://site.ru/sitemap.xml

Неожиданно? Ну да…

Предлагаю вам вспомнить мою аналитическую публикацию о сравнении robots.txt и meta robots — если не читали еще, то обязательно ознакомьтесь очень внимательно. После прочтения вывод будет следующим: лучше запрещать индексацию страниц и разделов при помощи метатега <meta name="robots" content="noindex">, а не при помощи robots.txt.

Но раз уж в заголовке сегодняшнего поста фигурирует название CMS Datalife Engine, то стоит вплотную переключиться на работу с DLE.

Я уже рассказывал о том, как закрывать ненужные страницы DLE при помощи мета-тега robots в третьей части seo оптимизации DLE, и сегодня я немного повторюсь, но добавлю новых фишек с учетом вопросов в комментариях.

Решение, которое будет описано ниже подходит абсолютно для всех версий DLE.

Для получения результата нам необходимо будет отредактировать всего один файл /engine/engine.php. Открываем его.

Для DLE 9.3 и ниже (для версий 9.4 и выше этого делать не надо) сперва необходимо найти следующую строку и удалить:

<meta name="robots" content="all" />

Далее (это уже для всех версий без исключения) находим строку:

if ($config['allow_rss']) $metatags .= <<<HTML

ВЫШЕ добавляем код:

if ( //$do == 'addnews' OR / Страница добавления новости с сайта / //$do == 'alltags' OR / Страница просмотра списка тегов / //$do == 'feedback' OR / Страница формы обратной связи / //$do == 'favorites' OR / Страницы закладок пользователей / //$do == 'lastcomments' OR / Страница просмотра всех последних комментариев на сайте, в т.ч. комментариев отдельного пользователя / //$do == 'lastnews' OR / Страница просмотра всех последних новостей / //$do == 'lostpassword' OR / Страница восстановления пароля / //$do == 'pm' OR / Страницы личных сообщений пользователей / //$do == 'register' OR / Страница регистрации нового пользователя / //$do == 'rules' OR / Страница правил сайта / //$do == 'stats' OR / Страница статистики сайта / //$do == 'search' OR / Страница поиска и результатов поиска / //$do == 'static' OR / Все статические страницы / //$do == 'tags' OR / Просмотр новостей по тегу / //$do == 'xfsearch' OR / Просмотр новостей новостей по доп. полям / //$subaction == 'allnews' OR / Просмотр всех новостей пользователя / //$subaction == 'newposts' OR / Просмотр непрочитанных новостей для пользователя / //$subaction == 'showfull' OR / Просмотр полной новости / //$subaction == 'userinfo' OR / Просмотр профиля пользователя / //$dle_module == 'date' OR / Просмотр архива новостей за год/месяц/день. Заменяет собой сразу все три следующие строки / //($year != '' and $month == '' and $day == '') OR / Просмотр архива новостей за год / //($year != '' and $month != '' and $day == '') OR / Просмотр архива новостей за месяц / //($year != '' and $month != '' and $day != '' and $subaction == '') OR / Просмотр архива новостей за день / //(intval($_GET['cstart']) > 1 ) OR / Любые страницы пагинации / //($dle_module == 'main' and (intval($_GET['cstart']) > 1)) OR / Страницы пагинации для главной страницы / //($do == 'cat' and $category != '' and $subaction == '' and (intval($_GET['cstart']) > 1)) OR / Страницы пагинации только для категорий / //($do == 'cat' and $category != '' and $subaction == '') OR / Просмотр любой категории / //($do == 'cat' and $category_id == 'X' and $subaction == '') OR / Просмотр определенной категории. X заменить на id категории / $catalog != '' / Просмотр каталога по буквенному идентификатору / ) $metatags .= <<<HTML \n<meta name="robots" content="noindex,nofollow" /> HTML;

Мини-FAQ из вопросов из комментариев:

Если я закрываю от индексации категорию, будут ли новости из этой категории индексироваться?
— Да, закрытие категории не закрывает публикации, принадлежащие этой категории.

Что если мне надо закрыть от индексации несколько категорий с id=1,2,3,4,5 какой код применять?
— Вместо $category_id == 'X' надо указать in_array ($category_id, array ('1', '2', '3', '4', '5'))

Огромный список вариаций на любой вкус. Мне кажется, я все предусмотрел, и это закроет 99% любых потребностей. Оставшийся 1% — это потребности вебмастеров-извращенцев :)

Итак, давайте я расскажу, как теперь всем этим делом пользоваться.

Если вы вставите код в его изначальном виде (в том в котором я его выше представил), то ничего не произойдет кроме закрытия страниц буквенного каталога. Чтобы нужные правила начали работать, необходимо удалить знак комментирования, то есть двойной слеш в начале строки «//».

Мой код — это своего рода конструктор, где вы сами выбираете, что вам нужно, а что нет, при этом все сразу есть под рукой – если что-то потребовалось, зашли в файл и раскомментировали нужную строку или наоборот закомментировали.

Я уверен – вы разберетесь, как этим делом пользоваться, и вам это понравится. Главное будьте очень внимательны – раскомментировав не ту строку, вы рискуете запретить доступ поисковикам к важной и нужной информации.

Да, я уже предвижу, что будут вопросы относительно сторонних модулей для DLE, не моих, разумеется, так как мои как раз должны индексироваться, а сторонних. Чтобы запретить индексацию какого-либо модуля, необходимо будет использовать конструкцию $do == 'module', где module – это название модуля, которое можно взять в админке. Например, http://site.ru/admin.php?mod=sitemap. Следовательно, необходимый кусок кода будет таким $do == 'sitemap', его надо будет вставить в мою конструкцию и не забыть оператор OR в конце. И все – дело в шляпе!

Так какой правильный robots.txt для DLE?

Вот именно такой, какой я указал в начале поста, такой, который содержит всего 4 строчки. Кстати, можно даже строку Disallow: /engine/ исключить, если не используются редиректы на внешние ссылки, и заменить на Allow: /. Разумеется, это рассматривается чистая CMS «из коробки», без ваших заморочек, больной фантазии и сторонних модулей.

Так что «чистим» свой robots.txt, внедряем мета-тег robots и радуемся постепенному исчезновению ненужных страниц из дополнительной выдачи Google (supplemental).

И еще один важный момент – правки надо будет не забывать вносить сразу же после очередного обновления движка.

Теперь вы узнали, что лично я считаю правильным robots.txt для DLE и все вопросы по этой теме можете задавать в комментариях, а не где попало. Жду ваших вопросов, предложений и отзывов.

До связи, друзья!

P.S. Вот вам еще парочка бонусных советов:

  • Найдите файл шаблона версии для печати print.tpl и откройте его. Сразу после <head> вставьте <meta name="robots" content="noindex">
  • Откройте файл /engine/skins/default.skin.php и проделайте тоже самое.

Первый бонус для того, чтобы запретить индексацию версии для печати, а второй запрет индексации админки, ибо тупо закрывать файл admin.php в robots.txt (а еще тупее использовать нестандартное название файла админки и закрывать его в robots.txt).

С уважением, Александр Алаев
 

Источник: http://alaev.info/blog/post/3900


Ходьба при болях в спине