Robots.txt для Wordpress

Robots.txt для WordPress

В интернете можно найти много публикаций на тему, как составить лучший (или даже самый лучший) файл robots.txt для WordPress. При этом в ряде таких популярных статей многие правила не объясняются и, как мне кажется, вряд ли понимаются самими авторами. Единственный обзор, который я нашел и который действительно заслуживает внимания, — это статья в блоге wp-kama. Однако и там я нашел не совсем корректные рекомендации. Понятно, что на каждом сайте будут свои нюансы при составлении файла robots.txt. Но существует ряд общих моментов для совершенно разных сайтов, которые можно взять за основу. Robots.txt, опубликованный в этой статье, можно будет просто копировать и вставлять на новый сайт и далее дорабатывать в соответствии со своими нюансами.

Более подробно о составлении robots.txt и значении всех его директив я писал здесь. Ниже я не буду подробно останавливаться на значении каждого правила. Ограничусь тем, что кратко прокомментирую что для чего необходимо.

Правильный Robots.txt для WordPress

правильноДействительно самый лучший robots.txt, который я видел на данный момент, это роботс, предложенный в блоге wp-kama. Ряд директив и комментариев я возьму из его образца + внесу свои корректировки. Корректировки коснутся нескольких правил, почему так напишу ниже. Кроме того, напишем индивидуальные правила для всех роботов, для Яндекса и для Google.

User-agent: *               # общие правила для роботов, кроме Яндекса и Google, 
                            # т.к. для них правила ниже
Disallow: /cgi-bin          # папка на хостинге
Disallow: /?                # все параметры запроса на главной
Disallow: /wp-              # все файлы WP: /wp-json/, /wp-includes, /wp-content/plugins
Disallow: /wp/              # если есть подкаталог /wp/, где установлена CMS (если нет, 
                            # правило можно удалить)
Disallow: *?s=              # поиск
Disallow: *&s=              # поиск
Disallow: /search/          # поиск
Disallow: /author/          # архив автора
Disallow: /users/           # архив авторов
Disallow: */trackback       # трекбеки, уведомления в комментариях о появлении открытой 
                            # ссылки на статью
Disallow: */feed            # все фиды
Disallow: */rss             # rss фид
Disallow: */embed           # все встраивания
Disallow: */wlwmanifest.xml # xml-файл манифеста Windows Live Writer (если не используете, 
                            # правило можно удалить)
Disallow: /xmlrpc.php       # файл WordPress API
Disallow: *utm=             # ссылки с utm-метками
Disallow: *openstat=        # ссылки с метками openstat
Allow: */uploads            # открываем папку с файлами uploads

User-agent: GoogleBot       # правила для Google (комментарии не дублирую)
Disallow: /cgi-bin
Disallow: /?
Disallow: /wp-
Disallow: /wp/
Disallow: *?s=
Disallow: *&s=
Disallow: /search/
Disallow: /author/
Disallow: /users/
Disallow: */trackback
Disallow: */feed
Disallow: */rss
Disallow: */embed
Disallow: */wlwmanifest.xml
Disallow: /xmlrpc.php
Disallow: *utm=
Disallow: *openstat=
Allow: */uploads
Allow: /*/*.js              # открываем js-скрипты внутри /wp- (/*/ - для приоритета)
Allow: /*/*.css             # открываем css-файлы внутри /wp- (/*/ - для приоритета)
Allow: /wp-*.png            # картинки в плагинах, cache папке и т.д.
Allow: /wp-*.jpg            # картинки в плагинах, cache папке и т.д.
Allow: /wp-*.jpeg           # картинки в плагинах, cache папке и т.д.
Allow: /wp-*.gif            # картинки в плагинах, cache папке и т.д.
Allow: /wp-admin/admin-ajax.php # используется плагинами, чтобы не блокировать JS и CSS

User-agent: Yandex          # правила для Яндекса (комментарии не дублирую)
Disallow: /cgi-bin
Disallow: /?
Disallow: /wp-
Disallow: /wp/
Disallow: *?s=
Disallow: *&s=
Disallow: /search/
Disallow: /author/
Disallow: /users/
Disallow: */trackback
Disallow: */feed
Disallow: */rss
Disallow: */embed
Disallow: */wlwmanifest.xml
Disallow: /xmlrpc.php
Allow: */uploads
Allow: /*/*.js
Allow: /*/*.css
Allow: /wp-*.png
Allow: /wp-*.jpg
Allow: /wp-*.jpeg
Allow: /wp-*.gif
Allow: /wp-admin/admin-ajax.php
Clean-Param: utm_source&utm_medium&utm_campaign # Яндекс рекомендует не закрывать 
                            # от индексирования, а удалять параметры меток, 
                            # Google такие правила не поддерживает
Clean-Param: openstat       # аналогично

# Укажите один или несколько файлов Sitemap (дублировать для каждого User-agent 
# не нужно). Google XML Sitemap создает 2 карты сайта, как в примере ниже.
Sitemap: http://site.ru/sitemap.xml
Sitemap: http://site.ru/sitemap.xml.gz

# Укажите главное зеркало сайта, как в примере ниже (с WWW / без WWW, если HTTPS 
# то пишем протокол, если нужно указать порт, указываем). Команду Host понимает 
# Яндекс и Mail.RU, Google не учитывает.
Host: www.site.ru

В примере я не добавляю правило Crawl-Delay, т.к. в большинстве случаев эта директива не нужна. Однако если у вас крупный нагруженный ресурс, то использование этой директивы поможет снизить нагрузку на сайт со стороны роботов Яндекса, Mail.Ru, Bing, Yahoo и других (Google не учитывает). Подробнее про это читайте в статье Robots.txt.

Ошибочные рекомендации других блогеров для Robots.txt на WordPress

ошибка

  1. Использовать правила только для User-agent: *
    Для многих поисковых систем не требуется индексация JS и CSS для улучшения ранжирования, кроме того, для менее значимых роботов вы можете настроить большее значение Crawl-Delay и снизить за их счет нагрузку на ваш сайт.
  2. Прописывание Sitemap после каждого User-agent
    Это делать не нужно. Один sitemap должен быть указан один раз в любом месте файла robots.txt
  3. Закрыть папки wp-content, wp-includes, cache, plugins, themes
    Это устаревшие требования. Однако подобные советы я находил даже в статье с пафосным названием «Самые правильный robots для WordPress 2016»! Для Яндекса и Google лучше будет их вообще не закрывать. Или закрывать «по умному», как это описано выше.
  4. Закрывать страницы тегов и категорий
    Если ваш сайт действительно имеет такую структуру, что на этих страницах контент дублируется и в них нет особой ценности, то лучше закрыть. Однако нередко продвижение ресурса осуществляется в том числе за счет страниц категорий и тегирования. В этом случае можно потерять часть трафика
  5. Закрывать от индексации страницы пагинации /page/
    Это делать не нужно. Для таких страниц настраивается тег rel="canonical", таким образом, такие страницы тоже посещаются роботом и на них учитываются расположенные товары/статьи, а также учитывается внутренняя ссылочная масса.
  6. Прописать Crawl-Delay
    Модное правило. Однако его нужно указывать только тогда, когда действительно есть необходимость ограничить посещение роботами вашего сайта. Если сайт небольшой и посещения не создают значительной нагрузки на сервер, то ограничивать время «чтобы было» будет не самой разумной затеей.
  7. Ляпы
    Некоторые правила я могу отнести только к категории «блогер не подумал». Например: Disallow: /20 — по такому правилу не только закроете все архивы, но и заодно все статьи о 20 способах или 200 советах, как сделать мир лучше 🙂

Спорные рекомендации других блогеров для Robots.txt на WordPress

  1. Комментарии
    Некоторые ребята советуют закрывать от индексирования комментарии Disallow: /comments и Disallow: */comment-*.
  2. Открыть папку uploads только для Googlebot-Image и YandexImages
    User-agent: Googlebot-Image
    Allow: /wp-content/uploads/
    User-agent: YandexImages
    Allow: /wp-content/uploads/
    Совет достаточно сомнительный, т.к. для ранжирования страницы необходима информация о том, какие изображения и файлы размещены на ней.

Спасибо за ваше внимание! Если у вас возникнут вопросы или предложения, пишите в комментариях!


  • Дмитрий Егоров

    Спасибо за статью. А зачем открывать для индексации JS, CSS и cache ?

    • Denis Bisteinoff

      С 2014 года гугл https://webmasters.googleblog.com/2014/10/updating-our-technical-webmaster.html и с 2015 яндекс https://yandex.ru/blog/webmaster/21369 это стало важно. Они теперь используют эти данные при анализе страниц сайта.

      • Дмитрий Егоров

        Ничего себе. Спасибо большое! Если бы не вы, я б так и не узнал.

      • Alex264

        Доброй ночи Денис! Подскажите пожалуйста! Как я понимаю предложенный вами robots.txt это готовый файл только нужно скопировать и подставить свой сайт и ссылки на карту сайта? Я установил только, что SSL и проделал много работы. Мне осталось в robots.txt изменить директиву Host и закинуть на сайт. Если я скопирую ваш вариант, пропишу свои ссылки и закину на сайт, ничего страшного не произойдет? И нужно ли удалить ваши комментарии к пунктам или же можно их оставить? Заранее спасибо и всего доброго!

        • Denis Bisteinoff

          Доброго времени.
          1. Если у вас стандартный сайт на WordPress, да, можно просто скопировать. Но, во-первых, всегда рекомендую проверять любой robots.txt, не закрывает ли он от индексирование то, что нужно и не открывает ли то, что не нужно. Во-вторых, надо смотреть, что вообще индексируется роботом. Для каждого сайта надо писать robots.txt индивидуально, чтобы индексирование происходило максимально эффективным и оптимальным способом.
          2. Комментарии лучше удалите.

          • Alex264

            Сайт простой новостной. Несколько рубрик, страниц, картинки ну итд. Как я понимаю WordPress сейчас автоматически генерирует robots. Он был простой — 3 строки и все. Ничего больше. Я скопировал ваш вариант — убрал комментарии, подставил свои ссылки и залил в корень. Проверил в консолях Яндекса и Гугла все вроде в порядке без ошибок.

          • Denis Bisteinoff

            Проверьте в Яндекс.Вебмастере и Google Search Console, что все нужные веб-документы (ссылки) индексируются.

      • Alex264

        В Яндексе закрыты feed, tag, прямые ссылки на некоторые старые картинки. Немножко еще не разобрался. Роботс показывает без ошибок. Гугл ругается на эти 2 строки —
        Clean-Param: utm_source&utm_medium&utm_campaign
        Clean-Param: openstat

        • Denis Bisteinoff

          Вы не туда смотрите. Такая проверка покажет только наличие ошибок в синтаксисе. В общем, лучше уже проконсультироваться со специалистом.
          Гугл — да, всегда ругается на эти две строчки. Именно потому, что он не знает таких директив и считает, что вы неправильно написали команду. Но эти строчки к гуглу и не относятся. Это для яндекса.

  • Denis Bisteinoff

    Спасибо за вопрос!
    С 2014 года гугл https://webmasters.googleblog.com/2014/10/updating-our-technical-webmaster.html и с 2015 яндекс https://yandex.ru/blog/webmaster/21369 это стало важно. Они теперь используют эти данные при анализе страниц сайта.

  • Геральт Бердников

    Спасибо) До этого помогла общая статья для настройки robots для CMS WebCanape. Теперь для личного проекта настроил по твоей инструкции

    • Denis Bisteinoff

      Спасибо за отзыв!
      Рад, что статья полезная 🙂

  • Den

    Есть только одна лажа, что если открывается *.css (спасибо блин гуглу), то боты лезут на эти страницы, причем несуществующие частенько. Был у меня когда-то плагин для голосования, я его удалил. Теперь частенько получаю в ithemes security что на 404 страницу попадают якобы с какой-то моей страницы или из гугла вот сюда:
    /wp-content/plugins/wp-polls/polls-css.css
    Думаю, если бы это было все закрыто, то не было бы таких приколов. Откуда оно ищет папку, которой уже месяц как не существует…

    • Denis Bisteinoff

      Это же частный случай, закрывать все CSS ни в коем случае нельзя.
      Но если есть что-то лишнее, то можно прописать Disallow. Здесь: Disallow: /wp-polls/polls-css.css

      • Den

        А откуда боты вообще ломятся в эти папки ведь на хостинге их уже давно нет? Вижу, что есть заходы из гугла по какому-то непонятному запросу.

        • Denis Bisteinoff

          А что в логах? Прогоняли сайт через какой-нибудь сканер, наподобие SEO Frog или NetPeak? Достаточно, чтобы где-то осталась прописана ссылка, и ее будет считывать crawler и постоянно отправлять на индексацию. Ну и такой вопрос: это действительно создает ощутимую нагрузку на сайт?

          • Den

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

          • Den

            Еще наблюдал такую картину. Онлайн пользователей на сайте по 70 человек где-то, +-20. Установил Jetpack и посетителей не больше 40 онлайн. Удаляю плагин и опять полно людей, все активные, общаются. Что за дела, не могу понять.

          • Denis Bisteinoff

            С данными плагинами дело не имел. Тоже сторонник минимум плагинов использовать, если это возможно сделать без необоснованных трудозатрат.
            Я бы проверил: 1) через системы статистики, какая часть посетителей роботы; 2) корректность самого robots.txt , в частности, что именно открыто для индексации для GoogleBot и Yandex. Недавно приятель оказался в *** (неприятном положении), т.к. поддержка яндекса выслал ему код вида
            User-agent: Yandex
            Allow: путь к фиду
            Ну и после того, как он это вставил, естественно яндекс стал индексировать абсолютно все ссылки на сайте — нагрузка взлетела в 4-5 раз. Даже самого дорого VIP тарифа на используемом хостинге оказалось недостаточно.

  • Евгений Кусков

    На некоторых сайтах видел в robots.txt такие строки:
    Allow: /wp-content/plugins
    Allow: /wp-content/themes
    Нужно ли разрешать ботам посещать данные разделы?

    • Denis Bisteinoff

      Нет.
      Это делается с целью открыть js, css и изображения в папках плагинов и тем. Однако вместе с тем дается доступ вообще ко всем файлам в этих папках, что не нужно.
      Все, что нужно открыть/закрыть в этих папках делается с помощью правил:
      Disallow: /wp-
      Allow: */uploads
      Allow: /*/*.js
      Allow: /*/*.css
      Allow: /wp-*.png
      Allow: /wp-*.jpg
      Allow: /wp-*.jpeg
      Allow: /wp-*.gif

      • Евгений Кусков

        Спасибо огромное за ответ, и очень хорошую и качественную статью. Сегодня пол дня убил на то, чтобы правильно настроить robots.txt пока не попал на ваш сайт!

        • Denis Bisteinoff

          И вам спасибо за отзыв! Рад, что помогло.

  • Allow: /*/*.js # открываем js-скрипты внутри /wp- (/*/ — для приоритета)

    Что значит «/*/ — для приоритета» ?

    почему именно /*/*.js а не *.js ?

    • Denis Bisteinoff

      На примере:
      Если
      Allow: *.js
      Disallow: /ajax/
      То к url /ajax/script.js применится правило disallow, потому что указан больший уровень вложенности. Чтобы открыть все .js, добавляем /*/*

  • Andrey Guru

    Отличная статья. Доработал свой файл роботса, начитавшись на различных блогах.
    Но все же есть сомнения, что у меня то-то не то.
    Как профессинал оените пожалуйста. Спасибо!
    https://uploads.disquscdn.com/images/f585c18a2d5b49902ea686f930cd0621ba2d7209ea50813f78ad0070a2cd9363.jpg

    • Denis Bisteinoff

      Спасибо за отзыв!
      А почему для Yandex и GoogleBot разные правила? Есть какие-то цели, почему не закрываете /author/, /feed/, /tag/ и т.д. для GoogleBot?
      Почему решили закрыть доступ к роботам директа и adwords? Они заходят на сайт, чтобы оценить качество страницы, что в итоге влияет на цену клика. Опять же, если контекстная реклама не идет, то соотв. роботы не заходят на сайт.
      Ну и правила для ботов Googlebot-Image и YandexImages излишни. Эта папка у вас и так открыта для всех роботов яндекса и гугл.

      • Andrey Guru

        Все удалил и сделал как у Вас. Но Несколько ошибок со шрифтами. Не подскажете, как исправить?
        https://uploads.disquscdn.com/images/2ba055d41a065d61b340224d83ecaaf5830b1913d1dda93e64be38d510e092ab.jpg

        • Denis Bisteinoff

          Аналогично, как с изображениями и скриптами:
          для всех user-agent, для которых закрывали от индексации /wp-, пропишите:
          Allow: /wp-*.ttf
          Allow: /wp-*.woff

          Скорее всего, в папке со шрифтами у вас будет еще несколько файлов с другими расширениями. Если такие есть, то добавьте еще правила по той же аналогии.

          • Andrey Guru

            Спасибо большое. Лишь на этом блоге сумел решить все свои проблемы с файлом роботса!

            Первые 2 ошибки надеюсь не из-за robots.txt

          • Denis Bisteinoff

            Рад помочь

  • Miraslau Pats

    Отличная статья! Автору большой краба!

    • Denis Bisteinoff

      Спасибо! 🙂

  • Евгений

    Хороший анализ. У меня вопросик. Я хотел забросить на сервер robots этот. Посмотрел по ссылке — url есть такой, и там три строчки в роботсе. Искал роботс на сервере — не нашёл, хоть убей. Как может быть так,что на сервере файла нет, а url есть и не пустой?
    Не будет конфликта, если я новый закину?
    Спасибо.

    • Denis Bisteinoff

      Спасибо!
      Конфликта не будет. Вопрос, какой из них будет показываться. Возможно, у вас стоит какой-то плагин, который создает виртуальный robots.txt.

      • Евгений

        Спасибо, проверю. Админку я излазил, плагина не нашёл.) Поставлю, посмотрим. У сайта неплохой траст, не хочется особо рисковать.)

  • Алексей Козлов

    Доброго времени суток. Помогите мне пожалуйста. Правльно ли я настроил файл роботс.
    За ранее благодарен за ответ

    https://uploads.disquscdn.com/images/f4e7547975f7097feaf9f5c1b89f5c68dc9ec495740b0563ef43bad99d0dd882.png

    • Denis Bisteinoff

      Алексей, вы можете посмотреть информацию в статье + посмотреть технические особенности вашего сайта; вебмастера, что индексируется поисковиками; какие страницы проиндексированы в поиске. Если есть что-то лишнее — скрыть, если каких-то страниц нет, добавить.
      Это анализ примерно на 40-60 минут.

  • Andrey Guru

    Подскажите пожалуйста насчет закрытия категорий.

    Вопрос по игровому сайту.

    Если у добавляемой игры на сайт несколько категорий, то ее появление на различных страницах будет считаться дублем?
    Например, игра Дарк Орбит — браузерная, космическя, шутер. Если прописать 3 разные метки или категории, то она появится в трех местах по трем разным адресам.

    Как быть?

    А если появляется небольшой анонс игры (картинка и 1 предложение из статьи) на этих страницах, то уже не так страшно в плане сео?
    Заранее спасибо.

    • Denis Bisteinoff

      Если есть несколько страниц (URL) с одним и тем же содержанием, используйте мета-тег rel=canonical для определения канонической.

  • Иван Доброславин

    А почему закрываем ссылки с utm-метками?

    Почему отдельно для Яндекса и Гугла, а для Маила, Рамблера, Бинга не нужно?

    • Denis Bisteinoff

      Если когда-либо запустите рекламу и ссылки разметите utm-метками, потом в индексе могут появиться дубли с utm-метками. Не уточнял, какой здесь действует механизм, откуда они появляются. На практике такое не редко видел.

      Маил, Рамблер, Бинг — если есть желание, пишите под них тоже. Точнее, под роботов у рамблера уже несколько лет нет — они используют технологию яндекса. Майл — как-то напополам свои результаты и результаты яндекса. Про бинг наверняка не знаю — наверное, есть свои роботы.

      • Иван Доброславин

        просто у меня на странице инфосайта будут ссылки на лендинг, каждая ссылка будет со своей utm-меткой. Получается, что я сделаю запрет и ротой не будет переходить по ней?

        • Denis Bisteinoff

          В этом случае да. Скорее всего, количество ссылок будет не очень большое, удобнее будет воспользоваться директивой Allow для этих страниц. Но вообще, первый раз столкнулся с такой ситуацией — расскажите, для каких целей ставите utm-метки? Реферал-то ведь все равно будет передаваться в систему статистики.

          • Иван Доброславин

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

            Я пока что отложу utm-метки на пару недель, нужно подробнее узнать об этом, чтобы не навредить 🙂 Хорошо, что наткнулся на ваш сайт 🙂

          • Denis Bisteinoff

            Так, т.е. ссылки с utm-метками будут только на одну страницу — на лендинг. Тогда нужно сделать так, как в моем примере. Если лендинг на отдельном домене или поддомене — то это как отдельный сайт, добавьте его через панели гугл/яндекс вебмастер, и он будет проиндексирован. Если это url вида site.ru/landing/ , то добавьте где-нибудь в подвале ссылку на эту страницу без utm-меток, чтобы по ней наверняка прошел робот.

          • Иван Доброславин

            Спасибо!