Первоначальной проблемой было то, что .htaccess
файлы не были включены в конфигурации сервера.После установки AllowOverride All
в конфигурации сервера для включения .htaccess
файлов это привело к циклу перенаправления ...
Вы получаете цикл перенаправления, поскольку серверная переменная HTTPS
сообщает об отключении, когдаHTTPS запрашивается.Это подразумевает, что у вас есть внешний прокси-сервер, который обрабатывает SSL-соединение, и это подтверждается тем фактом, что заголовок HTTP-запроса X-Forwarded-Proto
(который видит ваш сервер приложений) установлен на «https».(Заголовок X-Forwarded-Proto
устанавливается прокси-сервером при прохождении запроса.)
Это означает, что «частное» соединение между этим прокси и вашим сервером приложений осуществляется по обычному HTTP.Но соединение между прокси и клиентом защищено HTTPS.Это не обязательно проблема, однако, это означает, что вам нужно настроить свои директивы для проверки заголовка HTTP-запроса X-Forwarded-Proto
вместо серверной переменной HTTPS
.
Например:
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
Убедитесь, что вы очистили кеш браузера перед тестированием.Часто предпочтительнее тестировать с 302 (временными) перенаправлениями и менять только на 301 (постоянные), когда вы уверены, что все работает нормально - чтобы избежать проблем с кэшированием.