robots.txt в WordPress
ВАЖНО чтобы в корне вашего сайта НЕ было файла robots.txt! Если он там есть, то все описанное ниже просто не будет работать, потому что ваш сервер будет отдавать контент этого статического файла.
В WordPress запрос /robots.txt обрабатывается нестандартно. Для него «налету» создается контент файла robots.txt (через PHP).
Динамическое создание контента /robots.txt позволит удобно изменять его через админку, хуки или SEO плагины.
Изменить содержание robots.txt можно через:
- Хук robots_txt.
- Хук do_robotstxt.
- Плагин https://wordpress.org/plugins/pc-robotstxt/ или ему подобные.
Рассмотрим оба хука: чем они отличаются и как их использовать.
Читайте также: Настраиваем файл robots.txt для WordPress.
robots_txt
По умолчанию WP 5.5 создает следующий контент для страницы /robots.txt:
User-agent: * Disallow: /wp-admin/ Allow: /wp-admin/admin-ajax.php Sitemap: http://example.com/wp-sitemap.xml
Смотрите do_robots() — как работает динамическое создание файла robots.txt.
Этот хук позволяет дополнить уже имеющиеся данные файла robots.txt. Код можно вставить в файл темы functions.php.
// Дополним базовый robots.txt
// -1 before wp-sitemap.xml
add_action( 'robots_txt', 'wp_kama_robots_txt_append', -1 );
function wp_kama_robots_txt_append( $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;
}
В результате перейдем на страницу /robots.txt и видим:
User-agent: * Disallow: /wp-admin/ Allow: /wp-admin/admin-ajax.php 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 Sitemap: http://example.com/wp-sitemap.xml
Обратите внимание, что мы дополнили родные данные ВП, а не заменили их.
do_robotstxt
Этот хук позволяет полностью заменить контент страницы /robots.txt.
add_action( 'do_robotstxt', 'wp_kama_robots_txt' );
function wp_kama_robots_txt(){
$lines = [
'User-agent: *',
'Disallow: /wp-admin/',
'Disallow: /wp-includes/',
'',
];
echo implode( "\r\n", $lines );
die; // обрываем работу PHP
}
Теперь, пройдя по ссылке http://site.com/robots.txt увидим:
User-agent: * Disallow: /wp-admin/ Disallow: /wp-includes/