Стаття на цю тему вже була на блозі, тут я запропоную альтернативний варіант коду для robots.txt і трохи докладніше розберу деякі моменти.

У цій статті я хочу навести приклад оптимального, на мій погляд, коду для файлу robots.txt під WordPress, який ви можете використовувати в своїх блогах на WordPress.

Для початку, згадаємо навіщо потрібен robots.txt — файл robots.txt потрібен виключно для пошукових роботів, щоб «сказати» ім які розділи / сторінки сайту відвідувати, а які відвідувати не потрібно. Сторінки, які закриті від відвідування не потраплятимуть в індекс пошуковиків (Yandex, Google і т.д.).
Оптимальний код robots.txt для WordPress
User-agent: *
Disallow: /wp-
Disallow: *?s=
Disallow: *?attachment_id=
Disallow: */feed
Disallow: /xmlrpc.php
Disallow: */page/ # все виды пагинации
Allow: */uploads

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 :.

3. Решта рядки забороняють роботам «ходити» по посиланнях, які починаються з: / cgi-bin (каталог скриптів на сервері), / feed (RSS фід блогу), / trackback. Або де зустрічаються «? S =» *? S = (сторінка пошуку).

4. Правило Sitemap: http://site.ru/sitemap.xml вказує роботу на файл з картою сайту у форматі XML. Якщо у вас на сайті є такий файл, то пропишіть повний шлях до нього. Таких файлів може бути декілька, вказуємо шлях до кожного окремо.

5. У рядку Host: site.ru ми вказуємо головне дзеркало сайту. Якщо у сайту існують дзеркала (копії сайту на інших доменах), то щоб Yandex індексував всіх їх однаково, потрібно вказувати головне дзеркало. Директива Host: розуміється тільки Яндексом і не розуміється Гуглом. Керуючись документацією Яндекса: Host — незалежна директива і працює в будь-якому місці файлу (міжсекційна), тому її ставимо наверх або в самий кінець файлу, через порожній рядок.

Не забудьте поміняти site.ru на ваш сайт.
Це важливо

Yandex обробляє директиви Allow і Disallow не по тому порядку в якому вони вказані, а спочатку сортує їх від короткого правила до довгого, а потім обробляє. Наприклад:
User-agent: *
Allow: * / uploads
Disallow: / wp-

буде прочитана як:

User-agent: *
Disallow: / wp-
Allow: * / uploads

Другий варіант robots.txt для WordPress

Скажу наперед. Не знаю хто як, а я за перший варіант! Тому що він логічніше — не треба повністю дублювати секцію заради того, щоб вказати директиву Host для Яндекса, яка є меж секційної (розуміється роботом в будь-якому місці шаблону, без вказівки до якого роботові вона відноситься). Що стосується нестандартної директиви Allow, то вона працює для Яндекса і Гугла і якщо вона не відкриє папку uploads для всяких інших роботів, які її не розуміють, то в 99% нічого небезпечного це за собою не потягне. Я поки не помітив що перший robots працює не так як потрібно.

Вищенаведений код дещо не коректний. Спасибі коментатору «robots.txt» за вказівку на некоректність, правда в чому вона полягала довелося розбиратися самому. І ось до яких висновків я прийшов (природно я можу помилятися):

1. Деякі роботи (Не Яндекса і Гугла) — не розуміють більше 2 директив: User-agent: і Disallow :;

2. Директиву Яндекса Host: потрібно використовувати після Disallow :, бо деякі роботи (Не Яндекса і Гугла), можуть не зрозуміти її і взагалі забракувати robots.txt. Cамому ж Яндексу, судячи з документації, абсолютно все одно де і як використовувати Host :, хоч взагалі створюй robots.txt з однією тільки рядком Host: www.site.ru, для того, щоб склеїти всі дзеркала сайту;

3. Sitemap: міжсекційна директива для Яндекса і Google і мабуть для багатьох інших роботів теж, тому її пишемо в кінці через порожній рядок і вона буде працювати для всіх роботів відразу.
На основі цих поправок, коректний код повинен виглядати так:

User-agent: Yandex
Disallow: / wp-admin
Disallow: / wp-includes
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-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

Дописуємо під себе

Якщо вам потрібно заборонити ще які-небудь сторінки або групи сторінок, можете внизу додати правило (директиву) 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