
У вас возникла ошибка 404 в robots.txt на WordPress? Давайте попробуем заставить robots.txt не притворяться мёртвым на вашем Nginx + WordPress сайте
Просто классика! Ваш robots.txt решил сыграть в прятки и теперь отвечает 404 Not Found, словно это модный статус для SEO. «Файл есть, но сервер его не видит» — звучит как начало детектива, где Nginx играет роль слепого свидетеля, а WordPress делает вид, что ни при чём.
Но не волнуйтесь, мы заставим этот файл снова работать, даже если для этого придётся слегка намекнуть вашему серверу, где его искать.
Шаг 1: Проверьте, не притворяется ли robots.txt мертвым
WordPress, как хороший фокусник, любит генерировать robots.txt на лету. Но иногда плагины (привет, AIOSEO!) создают его виртуально, а сам файл физически отсутствует.
Зайдите в корень вашего сайта (например, /var/www/your-site/) и проверьте:
- Если robots.txt там лежит, но сервер его игнорирует — удалите.
- Если его нет — отлично, значит, WordPress должен его генерить.
Если файл есть, но Nginx его не видит, возможно, у вас не сайт, а сюжет для нового эпизода «Секретных материалов».
Шаг 2: Шепните Nginx на ушко, где искать robots.txt
Откройте конфиг вашего сайта (обычно /etc/nginx/sites-available/your-site.conf) вот такой командой:
1 |
sudo nano /etc/nginx/sites-enabled/вашсайт.ru.conf |
И вставьте этот магический код внутрь блока server { … }:
1 2 3 4 5 6 |
location = /robots.txt { allow all; # Пускаем всех, даже Googlebot после третьего кофе log_not_found off; # "404? Не видел, не слышал, не знаю" access_log off; # Чтобы не засорять логи нытьем поисковиков try_files $uri $uri/ /index.php?$args; # "Ну попробуй еще раз, вдруг появится?" } |
Этот код делает следующее:
- Разрешает доступ всем (даже тем, кто не должен был его видеть).
- Прекращает записывать в логи жалобы на 404 (потому что кому нужен еще один файл с ошибками?).
- Говорит Nginx: «Если файла нет, спроси у WordPress, может, он его придумает».
Шаг 3: Перезагрузите Nginx (и помолитесь, если надо)
После правки конфига выполните:
1 2 |
sudo nginx -t # Проверка, не сломали ли вы всё sudo systemctl reload nginx # "Перезагрузка? Да без проблем!" |
Если Nginx скажет «тест успешен», значит, вы молодец. Если нет — значит, где-то есть лишняя точка с запятой, которая разрушила всю вашу конфигурацию.
Шаг 4: Проверьте, не обманывает ли вас robots.txt снова
Откройте в браузере https://ваш-сайт/robots.txt. Если он появился — поздравляю, вы победили серверное упрямство! Если нет — возможно, ваш сайт проклят, и стоит вызвать экзорциста (или хотя бы проверить кэш).
Дополнительные ритуалы:
- AIOSEO: Убедитесь, что в настройках включена генерация robots.txt (раздел «Инструменты для работы с поисковыми системами» → «Файл Robots.txt»).
- Кэш: Если у вас WP Rocket, LiteSpeed или другой плагин кэширования — почистите кэш. (Потому что, конечно, это всегда вина кэша.)
- Конфликты: Проверьте, не дерутся ли плагины за право управлять robots.txt. (Да, такое бывает.)
Теперь ваш robots.txt должен работать, а поисковики — перестать нервно курить в сторонке. Если же проблема осталась… Ну, всегда можно попробовать переустановить сервер. Или всю операционную систему. Или просто смириться. 🚀
