Если /robots.txt в WordPress начал вести себя как обычная страница сайта — кэшируется, не обновляется после правки или отдаётся с заголовками, которые мешают поисковым роботам и отладке, проблему обычно нужно искать не в самом WordPress, а в связке rewrite + кэш-плагин + серверный кеш/CDN.
На практике это проявляется так: вы меняете правила в robots.txt, проверяете файл в браузере, а видите старую версию. Или в ответе есть Cache-Control, Expires, иногда даже Set-Cookie. Для статического файла это не всегда критично, но для robots.txt лучше отдать предсказуемый ответ без лишнего кеширования на уровне прокси и CDN.
Как понять, что проблема именно в кэшировании robots.txt
Сначала проверьте не содержимое файла, а HTTP-ответ. Это быстрее, чем гадать, виноват ли WordPress, nginx, Apache или плагин кеша.
curl -I https://example.com/robots.txtСмотрите на три вещи:
HTTP/1.1 200или304— ответ должен быть стабильным;Cache-ControlиExpires— если там длинный TTL, файл может жить в кеше слишком долго;Last-ModifiedиETag— они допустимы, но иногда мешают при агрессивном проксировании.
Если у вас включён Cloudflare, nginx fastcgi_cache, LiteSpeed Cache, WP Rocket или другой page cache, проверьте файл и после очистки кеша плагина, и после purge на уровне сервера/CDN. Если версия меняется только после полной очистки, значит, robots.txt попал в кешированный путь.
Что обычно ломает robots.txt в WordPress
1. Правило rewrite перехватывает запрос
WordPress умеет отдавать виртуальный robots.txt, если физического файла нет. Это удобно, но если запрос уходит через кеширующий слой как обычная HTML-страница, он может получить те же заголовки, что и посты.
2. Кеш-плагин не исключает robots.txt
Некоторые плагины кеша по умолчанию не трогают robots.txt, но после ручной настройки, CDN-правил или оптимизаций это исключение может исчезнуть. Тогда файл начинает обслуживаться как статический ресурс с долгим сроком жизни.
3. CDN отдаёт старую версию
Если CDN кэширует /robots.txt, вы можете менять файл на сервере, но внешне видеть старый ответ до истечения TTL или purge.
Пошаговое решение без лишней магии
Ниже вариант, который работает в большинстве установок: создаём физический robots.txt, настраиваем сервер так, чтобы он отдавался как обычный текстовый файл, и исключаем его из агрессивного кеша там, где это возможно.
Шаг 1. Создайте физический robots.txt в корне сайта
Если файла нет, WordPress будет генерировать его виртуально. Для предсказуемого поведения лучше положить файл в корень сайта рядом с wp-config.php.
User-agent: *
Disallow:
Sitemap: https://example.com/sitemap_index.xmlЕсли у вас несколько sitemap, укажите только тот URL, который реально отдаёт ваш сайт. Не добавляйте туда старые адреса «на всякий случай» — это потом сложно отследить в логах и в Search Console.
Шаг 2. Уберите лишние заголовки кеша на уровне сервера
Для Apache можно явно задать отдельные правила для robots.txt в .htaccess. Это не отменяет кеш полностью, но помогает убрать слишком агрессивные заголовки.
<Files