robots.txt на DLE?

gothtaxi
На сайте с 09.08.2010
Offline
59
1765

как правильно написать?

Это мой вариант сейчас:

User-agent: *

Disallow: /engine/go.php
Disallow: /engine/download.php
Disallow: /user/
Disallow: /newposts/
Disallow: /statistics.html
Disallow: /*subaction=userinfo
Disallow: /*subaction=newposts
Disallow: /*do=lastcomments
Disallow: /*do=feedback
Disallow: /*do=register
Disallow: /*do=lostpassword
Disallow: /*do=addnews
Disallow: /*do=stats
Disallow: /*do=pm
MadTomas
На сайте с 26.12.2007
Offline
109
#1

User-agent: Yandex

Disallow: /2012/

Disallow: /tags/

Disallow: /user/

Disallow: /backup/

Disallow: /engine/

Disallow: /language/

Disallow: /templates/

Disallow: /upgrade/

Disallow: /autobackup.php

Disallow: /admin.php

Disallow: /do=*

Disallow: /*do=*

Disallow: /?*

Disallow: /statistics.html

Host: ______________.ru

User-agent: *

Disallow: /2012/

Disallow: /tags/

Disallow: /user/

Disallow: /backup/

Disallow: /engine/

Disallow: /language/

Disallow: /templates/

Disallow: /upgrade/

Disallow: /autobackup.php

Disallow: /admin.php

Disallow: /do=*

Disallow: /*do=*

Disallow: /?*

Disallow: /statistics.html

Sitemap: http://______________.ru/sitemap.xml

Для сайтов о кредитах - отличная партнерская программа (http://cityads.ru/?ref=f020ed52)!!! Качественный контент для ваших сайтов (http://seonest.ru/?pid=68), однозначно!
V
На сайте с 23.05.2012
Offline
23
#2

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

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

User-agent: *

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

Для получения результата нам необходимо будет отредактировать всего один файл /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;

Огромный список вариаций на любой вкус. Мне кажется, я все предусмотрел, и это закроет 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).

P.S. Используёте поиск инфа с alaev

Блог программиста (http://prosoft.kiev.ua/)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий