robots.txt в WordPress

ВАЖНО чтобы в корне вашего сайта НЕ было файла robots.txt! Если он там есть, то все описанное ниже просто не будет работать, потому что ваш сервер будет отдавать контент этого статического файла.

В WordPress запрос /robots.txt обрабатывается нестандартно. Для него «налету» создается контент файла robots.txt (через PHP).

Динамическое создание контента /robots.txt позволит удобно изменять его через админку, хуки или SEO плагины.

Изменить содержание robots.txt можно через:

Рассмотрим оба хука: чем они отличаются и как их использовать.

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/