Конфиг robots.txt для Drupal 6.x "коробка" + кастомы

Главные вкладки

Аватар пользователя Shift-Web Shift-Web 16 июня 2010 в 20:11

Выкладываю свой обкатанный конфиг robots.txt для Drupal 6 коробочного билда и пару советов. Удаляем все левые файлы с корня, убираем правила dissalow для update.php, cron.php, xmlrpc.php(эти вещи уже на автомате игнорятся).

User-agent: *        
Disallow: /includes/
Disallow: /misc/
Disallow: /modules/
Disallow: /profiles/
Disallow: /scripts/
Disallow: /sites/
Disallow: /themes/
Disallow: /comment/reply
Disallow: /comment
Disallow: /contact
Disallow: /search/
Disallow: /user/register
Disallow: /user/password
Disallow: /user/login
Disallow: /filter
Disallow: /node$
Disallow: /*?sort*
Disallow: /*&sort*
Disallow: /tracker?
Sitemap: http://primary-mirror.ru/sitemap.xml

Host: primary-mirror.ru

Это «only-ЧПУ конфиг», наверное уже нет тех, кто не использует в Drupal эту возможность.

primary-mirror.ru — заменить на ваше головное зеркало сайта.

С директивой хост следующий прикол: если Вам не нужны оба зеркала имеет смысл склеить синонимы в .htaccess.

Лезем в файл, ищем условную директиву IfModule mod_rewrite.c, после RewriteEngine on втыкаем:

RewriteCond %{HTTP_HOST} ^www\.primary-mirror\.ru$ [NC]
RewriteRule ^(.*)$ http://primary-mirror.ru/$1 [L,R=301]

Эта шняга редиректит с www-синонима на без-www-синоним. Или обратная конструкция(есть глюки, может не сработать на некоторых хостингах):

RewriteCond %{HTTP_HOST} ^primary-mirror\.ru$ [NC]
RewriteRule ^(.*)$ http://www.primary-mirror.ru/$1 [L,R=301]

Как выбрать? Анализируем основную массу внешних ссылок, определяем на какой синоним они ведут, выбираем по количественному превосходству. Если проект нулевой, то лучше сразу выбрать.

Директива хост нужна для склейки. Нулевому проекту она не нужна, будет достаточно поставить и установить canonical:

Т.е. следуя логике главное зеркало в таком случае определится автоматом(авто-редирект+каноникал).

User-agent: *        
Disallow: /includes/
Disallow: /misc/
Disallow: /modules/
Disallow: /profiles/
Disallow: /scripts/
Disallow: /sites/
Disallow: /themes/
Disallow: /comment/reply
Disallow: /comment
Disallow: /contact
Disallow: /search/
Disallow: /user/register
Disallow: /user/password
Disallow: /user/login
Disallow: /filter
Disallow: /node$
Disallow: /*?sort*
Disallow: /*&sort*
Disallow: /tracker?
Sitemap: http://primary-mirror.ru/sitemap.xml

ОшЫбок не будет.

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

User-agent: *        
Disallow: /includes/
Disallow: /misc/
Disallow: /modules/
Disallow: /profiles/
Disallow: /scripts/
Disallow: /sites/
Disallow: /themes/
Disallow: /comment/reply
Disallow: /comment
Disallow: /contact
Disallow: /search/
Disallow: /user/register
Disallow: /user/password
Disallow: /user/login
Disallow: /filter
Disallow: /node$
Disallow: /*?sort*
Disallow: /*&sort*
Disallow: /tracker?
Sitemap: http://primary-mirror.ru/sitemap.xml

User-agent: Yandex        
Disallow: /includes/
Host: primary-mirror.ru

Он проигнорирует правила в звёздочке и будет требовать для себя полный дубль. Если засунуть яшин хост в общий набор, будет косипоры с мелкими поисковиками. Аналогичная ситуация с каментами в роботсе, яшка начнёт материться ошибками. Поэтому избегаем их.

Вроде как всё правильно, поправьте, если что Wink

====================================================

Robots.txt Блоговая конфигурация с заточкой на некоторые модули | Robots.txt build for blog edition

Заточка под global redirect, модуль archives, tracker, xml sitemap, google cse

User-agent: *
Crawl-delay: 1
Disallow: /includes/
Disallow: /misc/
Disallow: /modules/
Disallow: /profiles/
Disallow: /scripts/
Disallow: /themes/
Disallow: /comment/reply
Disallow: /comment
Disallow: /contact
Disallow: /user/register
Disallow: /user/password
Disallow: /user/login
Disallow: /search
Disallow: /search/google*
Disallow: /search/node*
Disallow: /search/user*
Disallow: /filter
Disallow: /node$
Disallow: /archive/all$
Disallow: /archive/all/2010$
Disallow: /*?sort*
Disallow: /*&sort*
Disallow: /tracker?
Sitemap: http://www.your-host.ru/sitemap.xml
Host: www.your-host.ru

Тюним your-host по вкусу с www или без. Для говно хостов ставим Crawl-delay: 4

В принципе, если есть какие-то модули, можно их рассмотреть и добавить правила -- пишите.

===============================================

Комментарии

Аватар пользователя quip@drupal.org quip@drupal.org 16 июня 2010 в 20:27

неплохая статья, кому-то может быть полезным )

Мне по правде больше вот такой роботс нравится - http://noindex.by/drupal/optimizaciya-struktury-sajta-v-drupale
разумеется при этом надо отрубить в pathauto создание путей для таксономии.

Аватар пользователя Sinkora Sinkora 16 июня 2010 в 22:08

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

Я вот, например, хочу закрыть доступ к файлу robots.txt для всех, кроме поисковиков, но все как-то лень...

Аватар пользователя Shift-Web Shift-Web 16 июня 2010 в 22:20

"<a href="mailto:quip@drupal.org">quip@drupal.org</a>" wrote:
Мне по правде больше вот такой роботс нравится

Этот конфиг — коробочный т.е. на пасавто и прочее не рассчитан.

Тоже неплохо Smile Надо бы вообще собрать модуль генератора или что-то вроде билдера по узер чекбокс конфигам, но это непросто учитывая специфику. Кстати у друпала серьёзный касипор с comment/reply/*/*

Я решил проблему килингом на уровне модуля comments. Если кому интересно скину как(можете переопределением - мне впадлу). Один хрен в индекс упасть успело.

Аватар пользователя Sinkora Sinkora 16 июня 2010 в 22:47

"Shift-Web" wrote:
Кстати у друпала серьёзный касипор с comment/reply/*/*

В чем именно касипор?

Disallow: /comment/reply/ - такая запись разве не исключает лишние страницы?

Аватар пользователя quip@drupal.org quip@drupal.org 16 июня 2010 в 22:59

"Sinkora" wrote:
Disallow: /comment/reply/ - такая запись разве не исключает лишние страницы?

"<a href="mailto:quip@drupal.org">quip@drupal.org</a>" wrote:
кстати у меня коммент реплай в роботсе запилено, а в гугле все равно вылезло.

Аватар пользователя Sinkora Sinkora 16 июня 2010 в 23:01

"<a href="mailto:quip@drupal.org">quip@drupal.org</a>" wrote:
кстати у меня коммент реплай в роботсе запилено, а в гугле все равно вылезло.

Тогда дело в Гугле.

Аватар пользователя Shift-Web Shift-Web 10 ноября 2015 в 11:46

"Sinkora" wrote:
В чем именно касипор?
Disallow: /comment/reply/ - такая запись разве не исключает лишние страницы?

Нет ) Друпал иногда слеш убирает.. Или там еще что-то. Нужно анализировать.

Рецепт comment.module:

#############################
       /* else {
          if ($node->comment == COMMENT_NODE_READ_WRITE) {
            if (user_access('post comments')) {
              $links['comment_add'] = array(
                'title' => t('Add new comment'),
                'href' => "comment/reply/$node->nid",
                'attributes' => array('title' => t('Add a new comment to this page.')),
                'fragment' => 'comment-form'
              );
            }
            else {
              $links['comment_forbidden']['title'] = theme('comment_post_forbidden', $node);
            }
          }
        } */

#############################

Первый линк билдер:

#######################################
      /*$links['comment_reply'] = array(
        'title' => t('reply'),
        'href' => "comment/reply/$comment->nid/$comment->cid"
      );
      */

########################################

Второй линк билдер(они рядом; один для анонимов, второй юзерский):

#########################################
/*      
      $links['comment_reply'] = array(
        'title' => t('reply'),
        'href' => "comment/reply/$comment->nid/$comment->cid"
      );
*/

#########################################
Аватар пользователя Sinkora Sinkora 16 июня 2010 в 23:39

Или я туплю, или что-то тут не так.

"Shift-Web" wrote:
Нет ) Друпал иногда слеш убирает.. Или там еще что-то. Нужно анализировать.

Причем Друпал?

Disallow: /comment/reply/ - говорит поисковикам не лезть сюда, и всё...

Аватар пользователя Shift-Web Shift-Web 16 июня 2010 в 23:54

"Sinkora" wrote:
Disallow: /comment/reply/ - говорит поисковикам не лезть сюда, и всё...

Садись, двойка.

Disallow: /comment/reply/ — каталог
Disallow: /comment/reply — страница

Аватар пользователя Shift-Web Shift-Web 16 июня 2010 в 23:56

"<a href="mailto:quip@drupal.org">quip@drupal.org</a>" wrote:
так и чо с ними делать-то? вырезать эти куски?

Ищи по файлу и закомментируй, как в примерах. Или залей то, что в атаче(тока свой бэкапни) хотя там 6.16-6.17 версия.

Аватар пользователя Sinkora Sinkora 17 июня 2010 в 0:26

"Sinkora" wrote:
Ищи по файлу и закомментируй, как в примерах. Или залей то, что в атаче(тока свой бэкапни) хотя там 6.16-6.17 версия.

На фига эти извращения?

Аватар пользователя Shift-Web Shift-Web 17 июня 2010 в 0:30

"Sinkora" wrote:
На фига эти извращения?

Ну смари... Ты юзаешь лесеночное отображение каментнов? Я не юзаю. Мне эти ссылки у каждого камента на реплай нафик не нужны.

Плюс на тизере ссылка добавить камент. Совсем нелепая и совсем ненужная

"Sinkora" wrote:
И что? А /comment/reply/* - что по-твоему?

Ну попробуй, расскажешь Wink

Аватар пользователя Sinkora Sinkora 17 июня 2010 в 2:43

"Shift-Web" wrote:
Ну смари... Ты юзаешь лесеночное отображение каментнов? Я не юзаю. Мне эти ссылки у каждого камента на реплай нафик не нужны.
Плюс на тизере ссылка добавить камент. Совсем нелепая и совсем ненужная

Так для удаления этих ссылок делаем функцию в отдельном модуле. Как-то так:

function mymodule_preprocess_comment(&$variables) {
  $comment = $variables['comment'];
  $links = module_invoke_all('link', 'comment', $comment, 0);
  unset($links['comment_add'], $links['comment_reply']);
  $variables['links'] = isset($links) ? theme('links', $links) : '';
}

"Shift-Web" wrote:
Ну попробуй, расскажешь ;-)

Ладно, на досуге пересмотрю документацию по robots.txt.

Аватар пользователя Shift-Web Shift-Web 17 июня 2010 в 2:57

"Sinkora" wrote:
Ладно, на досуге пересмотрю документацию по robots.txt.

Посмотри, только не забывай, что есть свои причуды у каждой ПС Wink Тут как бы иногда заподлянки мелкие попадаются, но сцуко вредные и весьма подводные

"Sinkora" wrote:
function mymodule_preprocess_comment(&$variables) {
$comment = $variables['comment'];
$links = module_invoke_all('link', 'comment', $comment, 0);
unset($links['comment_add'], $links['comment_reply']);
$variables['links'] = isset($links) ? theme('links', $links) : '';
}

Так я ж говорю — есь хотите переопределяйте. Мне просто влом из-за трёх закоментеных строк модуль левый создавать ))

Аватар пользователя Sinkora Sinkora 17 июня 2010 в 3:59

"Shift-Web" wrote:
Так я ж говорю — есь хотите переопределяйте. Мне просто влом из-за трёх закоментеных строк модуль левый создавать ))

Просто, как я вижу, ты любишь многое вырезать. Можно создать один модуль типа "my_hacks", куда помещать все хуки типа _alter, _preprocess и т.д. И совсем не левый модуль получится. Я так делаю. Один хук _menu_alter чего стоит! А ведь без него было бы намного хуже...

"Dan" wrote:
/comment/reply* - так дОлжно работать для всех случаев.

Кстати, может тогда лучше так и для остальных строчек?:
Disallow: /includes*
Disallow: /misc*
Disallow: /modules*
Disallow: /profiles*
Disallow: /scripts*
Disallow: /sites*
Disallow: /themes*

Хотя, ладно, надо спать...

Аватар пользователя Shift-Web Shift-Web 17 июня 2010 в 11:07

"Sinkora" wrote:
Просто, как я вижу, ты любишь многое вырезать. Можно создать один модуль типа "my_hacks", куда помещать все хуки типа _alter, _preprocess и т.д. И совсем не левый модуль получится. Я так делаю. Один хук _menu_alter чего стоит! А ведь без него было бы намного хуже...

"Sinkora" wrote:
Хотя, ладно, надо спать...

Так конешна можно. Хоть изподвыверта хоть изподколенкисперебросомчерезспину. Как по мне - главное чтоб работало. До сих пор этих хаков по пальцам пересчитать и пару примочек на template. И на кой это дрочиво? На шестёрку забили, все пыхят над 7. Значит ядро уже трогать никто не будет. Smile А спать нужно - это верно! ))

"Dan" wrote:
/comment/reply* - так дОлжно работать для всех случаев.

Не знаю я ... Пол года назад эта хрень упорно не работала, правда не на друпале, но сути не меняет. Это должно закрыть от индекса вообще всё, что после идёт.

Аватар пользователя apple_rom@drupal.org apple_rom@drupal.org 17 июня 2010 в 15:22

Quote:
Садись, двойка.

Disallow: /comment/reply/ — каталог
Disallow: /comment/reply — страница


Садись - двойка за двойку. Smile
Такого адреса - "/comment/reply" в друпале нет. А указание в robots.txt "/comment/reply/" подразумевает все адреса, начинающиеся с данной подстроки. И никаких *(звёздочек) ставить не надо.
Quote:
кстати у меня коммент реплай в роботсе запилено, а в гугле все равно вылезло.

Можно попробовать директиву Noindex.

Аватар пользователя Shift-Web Shift-Web 17 июня 2010 в 16:11

"<a href="mailto:apple_rom@drupal.org">apple_rom@drupal.org</a>" wrote:
Садись - двойка за двойку. :)

Так Вы объясните тогда почему друпал через раз слеш закрывает? )))

"<a href="mailto:apple_rom@drupal.org">apple_rom@drupal.org</a>" wrote:
/comment/reply/

Нука подробнее пожалуйста Smile

/comment/reply/23232 - индекс
/comment/reply/23423/1234123/фвафываф - индекс
/comment/reply - и это тоже будет индекс

"<a href="mailto:apple_rom@drupal.org">apple_rom@drupal.org</a>" wrote:
/comment/reply/

Вот эта приблуда вообще глупо сделана конкретно в друпале. Закроет? Да но только текущий каталог, а Вы не обращали внимание на то, что там еще одно(два) вложение?

Ваш конкретный пример:

__noindex.by/comment/reply/158/749
__noindex.by/comment/reply/158/749/

Оба доступны. Думайте сами.

"<a href="mailto:apple_rom@drupal.org">apple_rom@drupal.org</a>" wrote:
Можно попробовать директиву Noindex.

Можно, но нахрена? ))) В-буллетин мания? )))

Аватар пользователя Shift-Web Shift-Web 17 июня 2010 в 16:28

"<a href="mailto:apple_rom@drupal.org">apple_rom@drupal.org</a>" wrote:
Директива Noindex
Малоизвестный недокументированный способ использования Noindex в качестве директивы файла robots.txt:

А это ваще какое-то нечто мутное и неразумное.

http://ru.wikipedia.org/robots.txt

Вот Вам приколюха, как пища для ума. Сначала спецправила, потом общие.

А суть в том, что поисковиков много. Одному насрать в каком порядке определены инструкции для него, другой требует жёсткой конфигурации, третий поперхнётся на таком роботсе.

Вывод из этого следующий: чтобы достичь максимальной совместимости нужно использовать только то, что понимают все и желательно:

User-agent: *

Унификация - это хорошо и просто. Потому что не надо джеркингом каждый раз заниматься

Аватар пользователя apple_rom@drupal.org apple_rom@drupal.org 17 июня 2010 в 20:20

Без обид, но даже не знаю что сказать. Лишь одно - читайте даташиты, в т.ч. по robots.txt. Smile
А то, что Вы привели в качестве примера википедию, которая с одной стороны не нуждается в продвижении, а с другой - русскую, у которой даже в robots.txt ошибки :), то это - крайне не удачный пример.

Аватар пользователя Shift-Web Shift-Web 17 июня 2010 в 20:51

"<a href="mailto:apple_rom@drupal.org">apple_rom@drupal.org</a>" wrote:
Без обид, но даже не знаю что сказать. Лишь одно - читайте даташиты, в т.ч. по robots.txt. Smile
А то, что Вы привели в качестве примера википедию, которая с одной стороны не нуждается в продвижении, а с другой - русскую, у которой даже в robots.txt ошибки :), то это - крайне не удачный пример.

Нука посоветуйте Wink Даташиты написаны у каждого сёрча в справке. Остальное хрень, по сути... Ничего личного, с Уважением

p.s.: спор никуда не приведёт...

Аватар пользователя Sinkora Sinkora 19 июня 2010 в 13:50

"Shift-Web" wrote:
Так конешна можно. Хоть изподвыверта хоть изподколенкисперебросомчерезспину. Как по мне - главное чтоб работало. До сих пор этих хаков по пальцам пересчитать и пару примочек на template. И на кой это дрочиво? На шестёрку забили, все пыхят над 7. Значит ядро уже трогать никто не будет. Smile А спать нужно - это верно! ))

Решил прокомментировать.

Когда я делаю сайт (или некоторую часть сайта) на Друпале на заказ, то мне проще делать функционал через хуки и другие общепринятые правила.

Но вот разрабатываю один проект для себя и вижу, что в Друпале слишком много ненужного для меня. И тут я решил, что не буду поддерживать коробочную версию движка. Решил я заточить движок Друпала только под свои задачи, с одной лишь целью - добиться минимального количества исполняемого кода и запросов к БД. Например, даже если не трогать само ядро, то в таких модулях как node.module и comments.module дофига ненужного для меня. Также я решил во всем движке вручную переписать все записи типа t('bla-bla-bla') на 'бла-бла-бла на русском', ибо сайт только русскоязычный.

Также, изучая Друпал изнутри на своем сайте, я увидел как бессмысленно гоняется огромное количество функций впустую. Ну и вообще, по моим приблизительным подсчетам, сейчас дефолтный движок Друпала большую часть производительности отдает в космическое пространство, а не на пользу моего сайта.

Т.е. хочу в итоге сделать со временем свой движок на основе Друпала.

А насчет 7-ого Друпала. На кой черт мне переводить сайт на него? Будет у меня свой движок, заточенный на производительность, а другого не надо.

А если я и буду в будущем для кого-то делать сайты на Друпале, то буду использовать 7-ую версию, со всеми хуками и правилами без хакинга, как положено...

Что скажешь, Shift-Web?

Аватар пользователя Shift-Web Shift-Web 20 июня 2010 в 0:59

"Dan" wrote:
Я не он, но сказать обязан Smile
При таком кол-ве усилий, зачем друпал?

Как это зачем? Smile Что бы было Wink Есть свои соображения на этот счёт, которые я озвучивать не буду по ряду причин. С другой стороны -- ну я как бэ его изучаю по мере возможности. Я понимаю, что Вы не одну дворнягу с лавашом схомячили и имеете хороший экспириенс. Будем считать, что у меня свой подход. Каждому своё... Мне так проще (: Имею же я в конце концов право немного хренью пострадать? )))

Аватар пользователя Sinkora Sinkora 20 июня 2010 в 4:03

"Dan" wrote:
При таком кол-ве усилий, зачем друпал?

Ну, как зачем Друпал... На Друпале у меня работает и развивается сайт, и я хочу убрать лишнее в самом движке, хочу заточить движок только под нужные задачи. Я уже и так немало сделал в оптимизации сайта, теперь собираюсь редактировать сам Друпал (уже есть на примете куча ненужных вещей), хочу убрать все то, что мне не нужно. Т.е. Друпал для меня в данном случае - это каркас, на котором работает сайт, и с этим каркасом я могу делать все что мне угодно.

А что касается классической разработки сайтов на Друпале, то тут я ничего не имею против целостности ядра.

Аватар пользователя Shift-Web Shift-Web 20 июня 2010 в 4:30

Кроме шуток и смеха. Остыньте, я никого форкать не собираюсь. Свой движок уже есть. Смарти+Пир. Согласен, не совсем грамотно и где-то убого, но .... Тем не менее.

Мне нравится друпал и модульная архитектура это в целом практично. Для себя я в праве дрочить его как хочу. Можете извращаться с вьюсами, но это попсово как-то...

Действительно против классической drupal-way разработки ничего против не имею, но тем не менее в рамках этого сообщества приходится чувствовать себя, простите за выражение мудаком.

Ничего с друпалом не случится, чё все ссыкуют-то? Это на дофига харкорнее вордпреса. Большинство людей будет плеваться и молиться на укоз. Даже корпоративы будут на нём клепать ))) Если хотите, кстати то тут еще порассуждать и вправду можно.

Заказчик это заказчик. Мне как бы репу себе мылить тоже не хочется и естественно для них по ГОСТу.

Так вот. Будьте терпимее в конце концов. Я ничего просто так брать буду... чисто из принципа. Придёт время обязательно внесу вклад. А пока... Ну уж извините.. буду ковырять до победного.

т.ч.к.

Аватар пользователя volocuga@drupal.org volocuga@drupal.org 20 июня 2010 в 22:02

Кстати, озаботился следующим:

Многоступенчатые выборы видов - это таки зло? Если в тизерах везде одинаковый текст?

Пиша к размышлению+кое-что по развёрнутым фильтрам видов тут

Аватар пользователя Shift-Web Shift-Web 20 июня 2010 в 22:56

"<a href="mailto:volocuga@drupal.org">volocuga@drupal.org</a>" wrote:
Disallow: /node$ - это что означает?

Анти дубль главной

"<a href="mailto:volocuga@drupal.org">volocuga@drupal.org</a>" wrote:
Многоступенчатые выборы видов - это таки зло? Если в тизерах везде одинаковый текст?

Зло

Аватар пользователя weldpua2008 weldpua2008 25 октября 2010 в 1:10

Shift-Web wrote:
"<a href="mailto:volocuga@drupal.org">volocuga@drupal.org</a>" wrote:
Disallow: /node$ - это что означает?

Анти дубль главной


это правда?

подпишусь ка +1

Аватар пользователя weldpua2008 weldpua2008 25 октября 2010 в 13:39

Shift-Web wrote:
Есть ряд поправок и дополнений по теме, но не вижу смысла ибо 6ка вроде на закате.

7-ка еще бета Wink
так что тут либо 6 либо 5 Wink