Wodpress использует динамический подход к созданию robots.txt файла, особенно если вы используете различные плагины для этого. Например один из достаточно известных плагинов для SEO оптимизации, позволяет создавать robots.txt через конструктор.
Проблема в том, что при попытке открыть его по пути <domain>/robots.txt, браузер возвращает 404. Вроде бы все правильно, файла физически нет на диске в корневой директории веб-сервера, он генерируется средствами php, но видеть его мы все равно должны, иначе и yandex и google боты также получат 404 ошибку при попытке просканировать сайт.
Иногда можно встретить вот такой пример реализации отдачи robots.txt файла в конфигах nginx
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
И это было правильно, если бы мы не использовали плагины, а держали robots.txt на диске.
В нашем случае правильным вариантом будет такой код
location = /robots.txt {
try_files $uri $uri/ /index.php?$args;
access_log off;
log_not_found off;
}
Тут мы используем директиву try_files в который пытаемся найти запрашиваемый файл на диске из переменной $uri и $uri/ и если не находим отправляем fallback на index.php. Тут то и происходит вся магия php и динамически создаваемый robots.txt возвращается нам в браузер.
Этот нюанс позволит нам корректно отдавать генерируемый динамически robots.txt.