#Что означает ошибка
internal redirection cycle
Ошибка возникает при зацикливании внутренних перенаправлений, обычно из-за try_files или index. Проверьте существование конечного файла и порядок директив.
#Причины и признаки
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Цикл try_files | В случае «Nginx: rewrite or internal redirection cycle while internally redirecting» проверьте наличие причины «Цикл try_files» по исходному действию и связанному сообщению; переходить к исправлению стоит после её подтверждения. | Исправьте. Конкретное действие зависит от проверки причины «Цикл try_files», описанной в пошаговой инструкции. |
| Нет index | В случае «Nginx: rewrite or internal redirection cycle while internally redirecting» проверьте наличие причины «Нет index» по исходному действию и связанному сообщению; переходить к исправлению стоит после её подтверждения. | Создайте |
| Неверный root | В случае «Nginx: rewrite or internal redirection cycle while internally redirecting» проверьте наличие причины «Неверный root» по исходному действию и связанному сообщению; переходить к исправлению стоит после её подтверждения. | Исправьте. Конкретное действие зависит от проверки причины «Неверный root», описанной в пошаговой инструкции. |
| Конфликт location | В случае «Nginx: rewrite or internal redirection cycle while internally redirecting» проверьте наличие причины «Конфликт location» по исходному действию и связанному сообщению; переходить к исправлению стоит после её подтверждения. | Упростите |
#Пошаговое решение
- Определите причинуВ журнале Nginx найдите время запроса и сообщение
rewrite or internal redirection cycle while internally redirecting to ...черезsudo tail -n 100 /var/log/nginx/error.log. Запишите конечный внутренний путь, например/index.php, и реальный адрес страницы. Это цикл внутри конфигурации, а не всегда видимые браузером 301/302. - Выполните подходящее исправлениеОткройте конфигурацию нужного сайта и найдите
rewrite,try_files,error_pageиlocationчерезsudo nginx -T(не публикуйте вывод с секретами). Отследите цепочку: запрос переходит в один путь, тот снова направляет его на прежний. Особенно проверьте обработку/index.phpи fallback при отсутствующем файле. - Проверьте другие возможные причиныСохраните резервную копию виртуального хоста и исправьте только зацикленное правило: для PHP-сайта уточните существование
index.phpвroot, корректностьtry_filesи обработку PHP черезfastcgi_pass. Не копируйте пример чужой CMS без проверки корня сайта и схемы приложений. - Убедитесь в результатеВыполните
sudo nginx -tи только после успешной проверки перезагрузите конфигурацию командойsudo systemctl reload nginx. Откройте проблемный URL и несуществующую страницу: нормальная обработка должна вернуть страницу или настоящий 404, а не зациклиться. При ошибке верните сохранённый файл.
#Если проблема осталась
При повторении «Nginx: rewrite or internal redirection cycle while internally redirecting» сохраните обезличенную строку из журнала и верните прежнюю конфигурацию, если правка ухудшила работу сайта. Уточните активную версию процесса и конфигурационный файл, прежде чем предпринимать следующий шаг.