Полностью избитая тема. Огромное количество статей про правильное содержание файла robots.txt в интернете. Я оставляю эту заметку для себя, как наиболее подходящий для меня вариант этого столь важного файла.
Строгий контроль индексирования
Пофигистическое отношение по-началу, когда только начинаешь заниматься созданием сайтов, со временем сменяется навязчивым желанием контролировать все.
Не буду утомлять буквами. Содержание robots.txt для максимального контроля индексации поисковыми системами.
User-agent: * # Создаем секцию правил для роботов. * значит для всех
# роботов. Чтобы указать секцию правил для отдельного
# робота, вместо * укажите его имя: GoogleBot, Yandex.
Disallow: /cgi-bin # Стандартная папка на хостинге.
Disallow: /wp-admin/ # Закрываем админку.
Disallow: /wp/ # Каталог куда установлено ядро WP. Обычно ядро
# лежит рядом с wp-content и правило можно удалить.
Disallow: /? # Все параметры запроса на главной.
Disallow: *?s= # Поиск.
Disallow: *&s= # Поиск.
Disallow: /search # Поиск.
Disallow: /author/ # Архив автора.
Disallow: */embed # Все встраивания.
Disallow: */page/ # Все виды пагинации.
Disallow: */xmlrpc.php # Файл WordPress API
Disallow: *utm*= # Ссылки с utm-метками
Disallow: *openstat= # Ссылки с метками openstat
Disallow: /wp- # Все связанное с WP - это: /wp-content /wp-admin
# /wp-includes /wp-json wp-login.php wp-register.php.
Allow: */wp-*/*ajax*.php # AJAX запросы: */admin-ajax.php */front-ajaxs.php
Allow: */wp-sitemap # карта сайта (главная и вложенные)
Allow: */uploads # открываем uploads
Allow: */wp-*/*.js # внутри /wp- (/*/ - для приоритета)
Allow: */wp-*/*.css # внутри /wp- (/*/ - для приоритета)
Allow: */wp-*/*.png # картинки в плагинах, cache папке и т.д.
Allow: */wp-*/*.jpg # картинки в плагинах, cache папке и т.д.
Allow: */wp-*/*.jpeg # картинки в плагинах, cache папке и т.д.
Allow: */wp-*/*.gif # картинки в плагинах, cache папке и т.д.
Allow: */wp-*/*.svg # картинки в плагинах, cache папке и т.д.
Allow: */wp-*/*.webp # файлы в плагинах, cache папке и т.д.
Allow: */wp-*/*.pdf # файлы в плагинах, cache папке и т.д.
# Секция правил закончена
# Одина или несколько ссылок на карту сайта (файл Sitemap). Это независимая
# директива и дублировать её для каждого User-agent не нужно. Так например
# Google XML Sitemap создает 2 карты сайта:
Sitemap: http://example.com/wp-sitemap.xml
Sitemap: http://example.com/wp-sitemap.xml.gz
Стоит оговориться, в коде закрывается префикc wp-
, из чего следует, что вы должны внимательно контролировать обновления Wordpress во избежания закрытия от индексирования чего-то важного. Например, по-умолчанию карта сайта (sitemap) расположена по адресу http://example.ru/wp-sitemap.xml. И если вы напрямую не разрешите индексирование, то роботы пройдут мимо.
Полуавтоматическое индексирование
Для тех кому нужно что-то попроще, чтобы не сильно заморачиваться, вот оптимальный robots.txt, который содержит наиболее универсальные правила.
User-agent: * # Создаем секцию правил для роботов. * значит для всех
# роботов. Чтобы указать секцию правил для отдельного
# робота, вместо * укажите его имя: GoogleBot, Yandex.
Disallow: /cgi-bin # Стандартная папка на хостинге.
Disallow: /wp-admin/ # Закрываем админку.
Disallow: /? # Все параметры запроса на главной.
Disallow: *?s= # Поиск.
Disallow: *&s= # Поиск.
Disallow: /search # Поиск.
Disallow: /author/ # Архив автора.
Disallow: */embed # Все встраивания.
Disallow: */page/ # Все виды пагинации.
Disallow: */xmlrpc.php # Файл WordPress API
Disallow: *utm*= # Ссылки с utm-метками
Disallow: *openstat= # Ссылки с метками openstat
# Одина или несколько ссылок на карту сайта (файл Sitemap). Это независимая
# директива и дублировать её для каждого User-agent не нужно. Так например
# Google XML Sitemap создает 2 карты сайта:
Sitemap: http://example.com/sitemap.xml
Sitemap: http://example.com/sitemap.xml.gz
Дополнительно
Это для тех, кто хочет углубить свои познания относительно формирования robots.txt.
Cортировка правил
Yandex и Google обрабатывает директивы Allow
и Disallow
не по порядку в котором они указаны, а сначала сортирует их от короткого правила к длинному, а затем обрабатывает последнее подходящее правило.
Таким образом, если проверяется ссылка вида: /wp-content/uploads/file.jpg
, правило Disallow: /wp-
ссылку запретит, а следующее правило Allow: */uploads
её разрешит и ссылка будет доступна для сканирования.
Чтобы быстро понять и применять особенность сортировки, запомните такое правило: «чем длиннее правило в robots.txt, тем больший приоритет оно имеет. Если длина правил одинаковая, то приоритет отдается директиве Allow.
Дописываем под себя
Если вам нужно запретить еще какие-либо страницы или группы страниц, можете внизу добавить правило (директиву) Disallow:. Например, нам нужно закрыть от индексации все записи в категории news, тогда перед Sitemap: добавляем правило:
Disallow: /news
Если нужно закрыть любые вхождения /news, то пишем:
Disallow: */news
Robots.txt через хуки WP
В WordPress запрос на файл robots.txt обрабатывается отдельно и совсем не обязательно физически создавать файл robots.txt в корне сайта, более того это не рекомендуется! Потому что при таком подходе никакой плагин или код не сможет нормально изменить этот файл.
Изменить содержание robots.txt можно через два хука: robots_txt и do_robotstxt. Рассмотрим оба из них. Код приведенный ниже можно вставить в файл темы functions.php.
Robots_txt позволяет дополнить уже имеющиеся данные файла robots.txt.
// Дополним базовый robots.txt
// -1 before wp-sitemap.xml
add_action( 'robots_txt', 'wp_kama_robots_txt', -1 );
function wp_kama_robots_txt( $output ){
$str = '
Disallow: /cgi-bin # Стандартная папка на хостинге.
Disallow: /? # Все параметры запроса на главной.
Disallow: *?s= # Поиск.
Disallow: *&s= # Поиск.
Disallow: /search # Поиск.
Disallow: /author/ # Архив автора.
Disallow: */embed # Все встраивания.
Disallow: */page/ # Все виды пагинации.
Disallow: */xmlrpc.php # Файл WordPress API
Disallow: *utm*= # Ссылки с utm-метками
Disallow: *openstat= # Ссылки с метками openstat
';
$str = trim( $str );
$str = preg_replace( '/^[\t ]+(?!#)/mU', '', $str );
$output .= "$str\n";
return $output;
}
Do_robotstxt позволяет полностью заменить файл robots.txt.
add_action( 'do_robotstxt', 'my_robotstxt' );
function my_robotstxt(){
$lines = [
'User-agent: *',
'Disallow: /wp-admin/',
'Disallow: /wp-includes/',
'',
];
echo implode( "\r\n", $lines );
die; // обрываем работу PHP
}
На этом все.
По материалам: https://wp-kama.ru/id_803/pishem-pravilnyiy-robotstxt-dlya-wordpress.html
Оставить комментарий