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/