Привіт, друзі. Дехто в коментарях сьогодні мене попросив написати пост про правильний robots.txt для WordPress. Я якось навіть зніяковів, бо не уявляю собі, як можна зробити robots неправильним. Напевно, все ж можна, раз ви просите.
Це я до чого…

Пам’ятайте майже однойменний мій пост про правильний robots.txt для DLE, він зібрав дуже багато відгуків (майже 300 коментарів), як раз там мене і попросили реалізувати аналог для WordPress. Ну, окей, я зробив це, написання функції зайняло всього 5 хвилин. Тому я хочу вас познайомити сьогодні з правильним robots.txt для WP з моєї точки зору.
А закривати неугодні сторінки ми будемо моїм улюбленим способом – за допомогою метатегів.

Ідеальний robots.txt для WordPress буде приблизно такий:

User-Agent: *
Allow: /wp-content/uploads
Disallow: /wp-
Host: site.ru
Sitemap: http://site.ru/sitemap.xml

User-Agent: *
Allow: /wp-content/uploads
Disallow: /wp-
Host: site.ru
Sitemap: http://site.ru/sitemap.xml

Нічого дивного, якщо ви читали пост про DLE, там роботс взагалі з 4-х рядків.

Сторінки, які необхідно виключити з індексу, ми будемо закривати метатегів . Чим це краще і чому більш правильно — я писав дуже круту статтю і не перестаю її рекомендувати до вивчення — robots.txt vs. мета-тег robots.

Я не рекомендую використовувати плагіни, які роблять щось подібне. То про що я хочу розповісти, – тільки хардкор, тільки PHP. Для реалізації сьогоднішніх правок нам потрібно додати лише одну функцію в файл functions.php нашої теми оформлення.

Як звичайно всі гнучко як конструктор – ви самі вибираєте, що заборонити від індексації, а що дозволити. Дивимося функцію:

/*** ДОДАЄМО meta robots noindex,nofollow ДЛЯ СТОРІНОК ***/
function my_meta_noindex () {
if (
//is_archive() OR // Перегляд будь-яких сторінок архіву – за місяць, за рік, по категоріях, по авторам, і т. д.
//is_category() OR // Перегляд архіву статей за категоріями
is_author() OR // Перегляд архіву статей по авторам
is_date() OR // Перегляд архіву статей по будь-яких дат
//is_day() OR // Перегляд архіву статей по днях
//is_month() OR // Перегляд архіву статей по місяцях
//is_year() OR // Перегляд архіву статей по роках
is_tag() OR // Перегляд архіву статей за тегами
is_tax() OR // Перегляд архіву статей з таксономії. Що це?
//is_front_page() OR // Перегляд головної сторінки сайту. Те, що відображається на головній сторінці сайту http://site.ru/ См. в адмінці “Налаштування” – “Читання”. Тобто якщо в якості головної обрана статична сторінка, то при перегляді головної сторінки сайту і цієї статичної сторінки, буде повернуто значення функції true.
//is_home() OR // Головна сторінка блогу. Та сторінка, на який виводяться останні записи блогу. У мене, наприклад, це http://alaev.info/blog. См. в адмінці “Налаштування” – “Читання”. Тобто якщо в якості сторінки для виведення записів блогу обрана статична сторінка, то при перегляді цієї сторінки, буде повернуто значення функції true.
//is_singular() OR // Перегляд будь-яких типів записів, включаючи поодинокі пости, поодинокі сторінки, сторінки прикріплених файлів і т. д.
//is_single() OR // Перегляд будь-якого одиночного посту. Працює для будь-якого типу постів, крім сторінок перегляду прикріплених файлів і окремих одиночних сторінок
//is_page() OR // Перегляд окремої одиночної сторінки (це те, що в розділі “Сторінки” в адмінці)
is_attachment() OR // Сторінки перегляду прикріплених файлів
//is_paged() OR // Все і будь-які сторінки пагинации
is_search() // Сторінки результатів пошуку по сайту
) {echo “”..\n;}
}
add_action(‘wp_head’, ‘my_meta_noindex’, 3); // додаємо свій noindex,nofollow в head

/*** ДОДАЄМО meta robots noindex,nofollow ДЛЯ СТОРІНОК ***/
function my_meta_noindex () {
if (
//is_archive() OR // Перегляд будь-яких сторінок архіву – за місяць, за рік, по категоріях, по авторам, і т. д.
//is_category() OR // Перегляд архіву статей за категоріями
is_author() OR // Перегляд архіву статей по авторам
is_date() OR // Перегляд архіву статей по будь-яких дат
//is_day() OR // Перегляд архіву статей по днях
//is_month() OR // Перегляд архіву статей по місяцях
//is_year() OR // Перегляд архіву статей по роках
is_tag() OR // Перегляд архіву статей за тегами
is_tax() OR // Перегляд архіву статей з таксономії. Що це?
//is_front_page() OR // Перегляд головної сторінки сайту. Те, що відображається на головній сторінці сайту http://site.ru/ См. в адмінці “Налаштування” – “Читання”. Тобто якщо в якості головної обрана статична сторінка, то при перегляді головної сторінки сайту і цієї статичної сторінки, буде повернуто значення функції true.
//is_home() OR // Головна сторінка блогу. Та сторінка, на який виводяться останні записи блогу. У мене, наприклад, це http://alaev.info/blog. См. в адмінці “Налаштування” – “Читання”. Тобто якщо в якості сторінки для виведення записів блогу обрана статична сторінка, то при перегляді цієї сторінки, буде повернуто значення функції true.
//is_singular() OR // Перегляд будь-яких типів записів, включаючи поодинокі пости, поодинокі сторінки, сторінки прикріплених файлів і т. д.
//is_single() OR // Перегляд будь-якого одиночного посту. Працює для будь-якого типу постів, крім сторінок перегляду прикріплених файлів і окремих одиночних сторінок
//is_page() OR // Перегляд окремої одиночної сторінки (це те, що в розділі “Сторінки” в адмінці)
is_attachment() OR // Сторінки перегляду прикріплених файлів
//is_paged() OR // Все і будь-які сторінки пагинации
is_search() // Сторінки результатів пошуку по сайту
) {echo “”.”.”\n”;}
}
add_action(‘wp_head’, ‘my_meta_noindex’, 3); // додаємо свій noindex,nofollow в head

Рекомендую додати все це справа в початок файлу functions.php але якщо хочете, можете додати в будь-яке місце.

До кожного рядка коду є зрозумілий опис. Деякі рядки закомментированы (подвійний слеш перед рядком), а якісь ні – я приблизно прикинув, який повинен бути оптимальний варіант, і відразу налаштував код таким чином.

Щоб активувати якесь правило досить видалити подвійний слеш, а щоб заборонити правило, відповідно, подвійний слеш треба додати. Все просто і зрозуміло, чи не так?

Деякі правила можна комбінувати, наприклад, якщо треба закрити тільки сторінки пагинации при перегляді архівів (категорії, теги, автори і т. д.), а основні сторінки пагинации (наприклад, http://site.ru/page/2 і т. д.) залишити доступними для роботів, то правило буде таке: ( is_archive() && is_paged() ) OR

Трохи не забув попередити:
1. Після закриття сторінок описаним вище способом, не забудьте видалити з robots.txt директиви, які забороняють ці ж сторінки.
2. Деякі плагіни (наприклад, All in One SEO, який встановлений і у мене) теж пропонують свої налаштування індексації і додають мета-теги. Все це повинно працювати аналогічним шляхом. АЛЕ! Я рекомендую або відключити в плагіні ці налаштування, або не активувати їх в моєму коді. Мій спосіб набагато більш гнучкий і настроюється, ніж плагіни, тому вибір тут очевидний, не помиліться 🙂
3. Експериментуйте, друзі, і знайдіть свій правильний robots.txt для WordPress! Але не забувайте перевіряти результати своїх експериментів.

Ну, далі самі розберетесь 🙂

PS Все, що ви робите в цій інструкції – ви робите на свій страх і ризик. І якщо ви раптом повністю заборонити індексацію сайту, то я тут не причому!

PPS З попереднього досвіду я вас попереджаю — не смійте мені в коментарях викладати повністю зміст свого robots.txt і питати чи правильний він і як далі жити! Такі коменти я буду відразу видаляти. Якщо хочете ради, то, в крайньому випадку, давайте заслання на ваш роботс.

Спасибі за увагу, задавайте питання, пишіть коментарі, а головне отписывайтесь про працездатності.

З повагою, Олександр Алаєв