Файл robots.txt — важный инструмент для управления индексацией сайта поисковыми системами. В WordPress он обычно статичен и лежит в корне сайта, но бывают случаи, когда требуется динамически менять его содержимое в зависимости от условий, например, типа страницы, роли пользователя или других параметров.
Зачем нужен динамический robots.txt в WordPress
Статический файл robots.txt ограничен тем, что не может подстраиваться под специфические ситуации. Например, если вы хотите разрешить индексацию для обычных пользователей, но запретить для определённых категорий, или исключить из индексации страницы с определёнными параметрами, статический файл не поможет.
Динамический файл позволяет:
- Автоматически добавлять или исключать пути в зависимости от условий.
- Управлять индексацией для различных типов контента.
- Выполнять тесты и временно изменять правила без правки файлов на сервере.
Это особенно полезно для сайтов с большим количеством контента и сложной структурой.
Как WordPress обрабатывает запрос к robots.txt
По умолчанию WordPress перехватывает запрос к /robots.txt и генерирует базовый файл с помощью функции do_robots(). Этот файл можно переопределить, используя фильтры и хуки.
Если в корне сайта есть физический файл robots.txt, он будет использоваться вместо динамического.
Нам нужно создать динамический обработчик, который будет формировать содержимое файла в зависимости от логики.
Создание динамического robots.txt с помощью хука do_robotstxt
Для начала добавим в файл functions.php вашей темы или в отдельный плагин следующий код:
add_action('do_robotstxt', 'wpdevelop_generate_dynamic_robots_txt');
function wpdevelop_generate_dynamic_robots_txt() {
header('Content-Type: text/plain; charset=UTF-8');
// Базовые правила
echo "User-agent: *\n";
echo "Disallow: /wp-admin/\n";
echo "Allow: /wp-admin/admin-ajax.php\n";
// Добавим динамическое правило - запрет для авторов
if ( current_user_can('author') ) {
echo "Disallow: /private/\n";
}
// Запретить индексацию страниц с параметром utm_source
if ( isset($_SERVER['REQUEST_URI']) && strpos($_SERVER['REQUEST_URI'], 'utm_source') !== false ) {
echo "Disallow: /\n";
}
// Добавим ссылку на карту сайта
echo "Sitemap: " . home_url('/sitemap.xml') . "\n";
}Этот код генерирует файл robots.txt с базовыми правилами и добавляет динамические условия.
Пример расширенного динамического файла с учётом кастомных типов записей
Часто нужно управлять индексацией кастомных типов записей (custom post types). Например, запретить индексацию черновиков или определённых категорий.
Расширим пример:
add_action('do_robotstxt', 'wpdevelop_advanced_dynamic_robots_txt');
function wpdevelop_advanced_dynamic_robots_txt() {
header('Content-Type: text/plain; charset=UTF-8');
echo "User-agent: *\n";
echo "Disallow: /wp-admin/\n";
echo "Allow: /wp-admin/admin-ajax.php\n";
// Запрет индексации кастомного типа записи 'secret_project'
echo "Disallow: /secret_project/\n";
// Получим все черновики и запретим их индексацию через meta robots
$args = [
'post_type' => 'post',
'post_status' => 'draft',
'posts_per_page' => -1
];
$drafts = get_posts($args);
foreach ($drafts as $draft) {
echo "Disallow: " . get_permalink($draft->ID) . "\n";
}
// Добавим sitemap
echo "Sitemap: " . home_url('/sitemap.xml') . "\n";
}Такой подход полезен, если вы хотите полностью контролировать, какие URL не индексируются.
Использование плагинов для динамического управления robots.txt
Если хочется не писать код, можно использовать плагины с расширенными настройками.
Clearfy Pro (https://wpshop.ru/clearfy-pro?utm_source=wpdevelop.ru&utm_medium=article&utm_campaign=kak-sozdat-dinamicheskij-fayl-robots-txt-v-wordpress) предоставляет удобный интерфейс для управления robots.txt и другими SEO-настройками прямо из админки.
Его преимущества:
- Редактирование robots.txt без доступа к FTP.
- Автоматические шаблоны и рекомендации.
- Интеграция с другими SEO-плагинами.
Советы по отладке и проверке динамического robots.txt
После создания динамического файла обязательно проверьте, что он корректно работает:
- Откройте в браузере
https://ваш-сайт.ru/robots.txtи проверьте содержимое. - Используйте инструменты Google Search Console — раздел «Проверка файла robots.txt».
- Проверьте, что правила применяются как задумано для разных страниц.
- Учтите, что кэширование может влиять на скорость обновления файла.
Заключение
Динамический файл robots.txt даёт гибкость и точный контроль над индексацией сайта. Используя хуки WordPress, можно создавать сложные правила и быстро менять их без доступа к файловой системе.
Если нужна простота и удобство, рассмотрите плагины вроде Clearfy Pro, которые облегчают управление SEO-настройками.
Используйте примеры из статьи как отправную точку для создания собственного решения, адаптированного под задачи вашего сайта на WordPress.