Статья на эту тему уже была на блоге 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: */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 // 9
- Пишем плагин: Методы деинсталяции плагинов ← 13 Июль 2011 // 6
- 3 способа построения циклов в WordPress ← 20 Июнь 2011 // 21
Вы пишите об одном robot txt, а у Вас же стоит совсем другой.
Как это другой? У меня первый вариант стоит, немного дополненный под особенности этого сайта.
А я использую для своего блога на wordpress совсем другой robots.txt и посещаемость стала 5000 человек в день.
Это глупости - от этого файла резко и бешено не вырастет посещаемость
Спасибо за подробное описание. Пару дней назад перевез один из своих Blogger на WP. Пока еще только осваиваю премудрости WP. Завтра попробую внести изменения в robots.txt
Во втором варианте правильнее будет
Disallow: */trackback
Disallow: */feed
Disallow: */comments
Потому-что
Disallow: /feed
запретит http://wp-kama.ru/feed/
но не запретит http://wp-kama.ru/post-1/feed/ , а нам же эти страницы тоже нужно закрыть.
Проверить можно в панели ВМ яндекс “Настройка индексирования => Анализ robots.txt”. Кстати, там же можно было посмотреть используемые роботом Яндекса секции robots.txt и не писать Платону.
Спасибо за замечания.
Я там и посмотрел! Писал для уверенности...
Многие советую вообще задиселоувить все страницы категорий Disallow: /category/
Это может быть связано с использованием плагина который скрывает это слово с ссылок, как у меня, например, просмотри robots.txt и ссылки на категории: igbur.com
Как раз то что искал, настраиваю блог)) Спасибо.
Нашёл опечатку:
Разбор кода первого варианта, пункт 4:
"указываем пусть к каждому отдельно"
Спасибо, поправил!
Одна из немногих нормальных статей. Я вот тоже недавно в своем блоге написал альтернативу этим "мой пример robots.txt", которые ничего не объясняют.
неопотные веб-мастера, исправьте.