Статья на эту тему уже была на блоге wp-info.ru, здесь я предложу альтернативный вариант кода для robots.txt и немного подробнее разберу некоторые нюансы.

В этой статье я хочу привести пример оптимального, на мой взгляд, кода для файла robots.txt под WordPress, который вы можете использовать в своих блогах на WordPress.
Для начала, вспомним зачем нужен robots.txt — файл robots.txt нужен исключительно для поисковых роботов, чтобы "сказать" им какие разделы/страницы сайта посещать, а какие посещать не нужно. Страницы, которые закрыты от посещения не будут попадать в индекс поисковиков (Yandex, Google и т.д.).
Оптимальный код robots.txt для WordPress (вариант 1)
User-agent: * Allow: */uploads Disallow: /cgi-bin Disallow: /wp- Disallow: *?s= Disallow: *?attachment_id= Disallow: */feed Disallow: /xmlrpc.php Sitemap: http://site.ru/sitemap.xml Sitemap: http://site.ru/sitemap2.xml Host: www.site.ru
Теперь, небольшой разбор кода:
1. В строке User-agent: * мы указываем, что все нижеприведенные правила будут работать для всех поисковых роботов *. Если нужно, чтобы эти правила работали только для одного, конкретного робота, то вместо * указываем имя робота (User-agent: Yandex, User-agent: Googlebot).
2. В строке Allow: */uploads мы намеренно разрешаем индексировать ссылки, в которых встречается /uploads. Это правило обязательно, т.к. ниже мы запрещаем индексировать ссылки начинающихся с /wp-, а /wp- входит в /wp-content/uploads. Поэтому, чтобы перебить правило Disallow: /wp- нужна строчка Allow: */uploads, ведь по ссылкам типа /wp-content/uploads/... у нас могут лежать картинки, которые должны индексироваться, так же там могут лежать какие-то загруженные файлы, которые, опять же, незачем скрывать от поисковиков. Allow: нужно ставить перед правилами Disallow:.
Для Yandex, Allow: должна идти перед директивой Disallow:, которая перекрывает её правила, а не после.
А Google понимает Allow: и вверху и внизу секции.
3. Остальные строчки запрещают роботам "ходить" по ссылкам, которые начинаются с: /cgi-bin (каталог скриптов на сервере), /feed (RSS фид блога), /trackback и /comments. Или где встречаются "?s=" *?s= (страница поиска).
4. Правило Sitemap: http://site.ru/sitemap.xml указывает роботу на файл с картой сайта в формате XML. Если у вас на сайте есть такой файл, то пропишите полный путь к нему. Таких файлов может быть несколько, указываем путь к каждому отдельно.
5. В строке Host: site.ru мы указываем главное зеркало сайта. Если у сайта существуют зеркала (копии сайта на других доменах), то чтобы Yandex индексировал всех их одинаково, нужно указывать главное зеркало. Директива Host: понимается только Яндексом и не понимается Гуглом. Руководствуясь документацией Яндекса: Host — независимая директива и работает в любом месте файла (межсекционная), поэтому её ставим наверх или в самый конец файла, через пустую строку.
Не забудьте поменять site.ru на ваш сайт.
Корректный код robots.txt для WordPress (вариант 2)
Вышеприведенный код немного не корректный. Спасибо комментатору "robots.txt" за указание на некорректность, правда в чем она заключалась пришлось разбираться самому. И вот к каким умозаключениям я пришел (естественно я могу ошибаться):
1. Некоторые роботы (не Яндекса и Гугла) — топорные и понимают не более 2 директив: User-agent: и Disallow:;
2. Директиву Яндекса Host: нужно использовать после Disallow:, потому что некоторые роботы (не Яндекса и Гугла), могут не понять её и вообще забраковать robots.txt. Cамому же Яндексу, судя по документации, абсолютно все равно где и как использовать Host:, хоть вообще создавай robots.txt с одной только строчкой Host: www.site.ru, для того, чтобы склеить все зеркала сайта;
3. С директивой Sitemap: я не разобрался независимая она или должна использовать для каждого блока отдельно (в секции). Судя по тому как она используется на robotstxt.org.ru — она независимая и может быть использована, где угодно. Но лучше не рисковать и добавить её во все блоки (секции). Sitemap: межсекционная директива для Яндекса и Google и видимо для многих других роботов тоже, поэтому её пишем в конце через пустую строку и она будет работать для всех роботов сразу.
На основе этих поправок, корректный код должен выглядеть так:
User-agent: Yandex Disallow: /wp-admin/ Disallow: /wp-includes/ Disallow: /wp-trackback Disallow: /wp-feed Disallow: /wp-comments Disallow: /wp-content/plugins Disallow: /wp-content/themes Disallow: /wp-login.php Disallow: /wp-register.php Disallow: */trackback Disallow: */feed Disallow: /cgi-bin Disallow: *?s= Host: site.ru User-agent: * Disallow: /wp-admin/ Disallow: /wp-includes/ Disallow: /wp-trackback Disallow: /wp-feed Disallow: /wp-comments Disallow: /wp-content/plugins Disallow: /wp-content/themes Disallow: /wp-login.php Disallow: /wp-register.php Disallow: */trackback Disallow: */feed Disallow: /cgi-bin Disallow: *?s= Sitemap: http://site.ru/sitemap.xml
Не знаю кто как, а я за первый вариант! Потому что он логичнее — не надо полностью дублировать секцию ради того, чтобы указать директиву Host для Яндекса, которая является межсекционной (понимается роботом в любом месте шаблона, без указания к какому роботу она относится). Что касается нестандартной директивы Allow, то она работает для Яндекса и Гугла и если она не откроет папку uploads для всяких других роботов, которые её не понимают, то в 99% ничего опасного это за собой не повлечет.
Дописываем под себя
Если вам нужно запретить еще какие-либо страницы или группы страниц, можете внизу добавить правило (директиву) Disallow:. Например, нам нужно закрыть от индексации все записи в категории news, тогда перед Sitemap: добавляем правило:
Disallow: /news
Оно запретить роботам ходить по подобным ссылками:
http://site.ru/news
http://site.ru/news/drugoe-nazvanie/
Если нужно закрыть любые вхождения /news, то пишем:
Disallow: */news
Закроет:
http://site.ru/news
http://site.ru/news/drugoe-nazvanie/
http://site.ru/category/newsletter-nazvanie.html
Более подробно изучить директивы robots.txt вы можете на странице помощи Яндекса (но имейте ввиду, что не все правила, которые описаны там, работают для Google), а здесь проверить ваш robots.txt у Яндекса. В Google robots.txt проверяем по такой ссылке:
https://www.google.com/webmasters/tools/siteoverview?hl=ru
теперь:
https://www.google.com/webmasters/tools/crawl-access?hl=ru&siteUrl=http://site.ru/.
Сайт должен быть добавлен в панель веб-мастера.
Я спросил у Яндекса...
Задал вопрос в тех. поддержку Яндекса насчет межсекционного использования директив Host и Sitemap:
Вопрос:
Здравствуйте!
Пишу статью насчет robots.txt на своем блоге. Хотелось бы получить ответ на такой вопрос (в документации я не нашел однозначного "да"):
Если мне нужно склеить все зеркала и для этого я использую директиву Host в самом начале фала robots.txt:
Host: site.ru User-agent: * Disallow: /asdБудет ли в данном примере правильно работать Host: site.ru? Будет ли она указывать роботам что site.ru это основное зеркало. Т.е. эту директиву я использую не в секции, а отдельно (в начале файла) без указания к какому User-agent она относится.
Также хотел узнать, обязательно ли директиву Sitemap нужно использовать внутри секции или можно использовать за пределами: например, через пустую строчку, после секции?
User-agent: Yandex Disallow: /asd User-agent: * Disallow: /asd Sitemap: http://site.ru/sitemap.xmlПоймет ли робот в данном примере директиву Sitemap?
Надеюсь получить от вас ответ, который поставит жирную точку в моих сомнениях.
Спасибо!
Ответ:
Здравствуйте!
Директивы Host и Sitemap являются межсекционными, поэтому будут использоваться роботом вне зависимости от места в файле robots.txt, где они указаны.
--
С уважением, Платон Щукин
Служба поддержки Яндекса
В заключении скажу...
Ну, и напоследок нужно напомнить, что изменения в robots.txt на уже рабочем сайте будут заметны только спустя несколько месяцев (2-3 месяца). Потому что выкинуть страницу из индекса для поисковика - это достаточно серьезное решение, ведь принимает он их туда не просто так!
Ходят слухи, что Google вообще может проигнорировать правила в robots.txt и взять страницу в индекс, если сочтет что страница ну очень уникальная и полезная и она просто обязана быть в индексе. Однако другие слухи опровергают эту мысль тем, что неопытные оптимизаторы могут неправильно указать правила в robots.txt и так закрыть нужные страницы от индексации, но оставить ненужные.
Возможно кому-то есть, что поправить, пожалуйста не молчите!
---
Вот, нашел еще одни пример, как можно составить robots.txt для wordpress. Не буду ничего утверждать насчет его корректности, потому что скользкое это дело: думайте сами, решайте сами.
- Предыдущие записи
- Меню на jQuery ← 28 Июль 2011 // 14
- Пишем плагин: Методы деинсталяции плагинов ← 13 Июль 2011 // 6
- 3 способа построения циклов в WordPress ← 20 Июнь 2011 // 24
Здравствуйте.у меня раньше был такой robots.txt:
User-agent: *
Disallow: /wp-login.php
Disallow: /wp-register.php
Disallow: /webstat/
Disallow: /feed/
Disallow: /trackback
Disallow: */trackback
Disallow: */feed
Disallow: */comments
Disallow: /*?*
Disallow: /*?
Disallow: /category/*/*
Disallow: /wp-content/
Disallow: /wp-admin/
Disallow: /wp-includes/
Disallow: /comments
User-agent: Yandex
Disallow: /wp-login.php
Disallow: /wp-register.php
Disallow: /feed/
Disallow: /trackback
Disallow: */trackback
Disallow: */feed
Disallow: */comments
Disallow: /*?*
Disallow: /*?
Disallow: /category/*/*
Disallow: /wp-content/
Disallow: /wp-admin/
Disallow: /wp-includes/
Disallow: /comments
Host
Но не индексировались картинки.
Пришлось урезать до такого:
User-agent: *
Disallow:
Host:
Может быть подскажете что было неправильно в robots, из за чего не индексировались картинки.?Самостоятельно разобраться не получилось.
Disallow: /wp-content/ - думаю из за этой строчки
А я всегда считал что это за текст только отвечает.Спасибо большое что подсказали!
Яндекс - это быдло поисковик работающий только на бабло.....
google forever!
Перешел он вам дорогу видимо, он это умеет...
По поводу Гугла- это правда. Зачастую "кушает" даже то, что закрыто в роботсе. Например отлично кушает древовидные комментарии у меня на блоге, при том, что они закрыты через роботс. Всем желающим можно посмотреть кол-во проиндексированных Гуглом страниц и проверить, что большинство из них закрыты в роботсе.
Где можно почитать о том, как вы сделали "съезжающиеся" кнопки социальных сетей под постами?
Заранее спасибо.
Нигде наверное, это я сам придумал и сделал. Вообще, думаю убрать эту причуду. По факту - толку от нее нет, только отвлекает... Не советовал бы...
Слушай, Тимур а как тебе такие правила?(взято из известной книги "Digging into wordpress")
Disallow: /wp-*
Disallow: *.php
(думаю, вполне логичное правило - исключить ссылки оканчивающиеся на .php)
Disallow: */feed*
Disallow: */trackback*
вместо:
Disallow: /wp-
Disallow: */feed
Disallow: */trackback
как вернее будет?
Странные немного правила, на мой взгляд:

- в конце ставить звездочку, все равно что не ставить. Заставляет задуматься, когда люди делают, то чего можно не делать...
- зачем нужно исключать .php файлы
- правило /wp- закрывает каталог uploads в wp-content, что чревато не попаданием в индекс картинок и файлов из упомянутого uploads...
Видимо для различных файлов типа wp-config.php и прочих "движковых" файлов. С другой стороны, разве есть нужные файлы для индексации, оканчивающие на .php?
так разве нельзя изменить папку для загрузок в настройках вп на иную, например: site.ru/sources/ ?
Спасибо большое за статью и за помощь.
Забрал первый способ) посмотрим что будет
У меня тоже он, полет нормальный. Буду ждать ваших выводов