Почему мой htaccess для no-www и https не работает? - PullRequest
0 голосов
/ 24 января 2019

У меня проблема с моим .htaccess файлом. Я хочу перенаправить no-www на www и HTTP на HTTPS.

Я пробовал эти файлы, но они не работают ...

RewriteEngine On  
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteRule ^(.*) http://www.example.com/$1 [QSA,L,R=301]

RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [QSA,R=301,L]

А

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301] 

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]

Вы можете мне помочь?

1 Ответ

0 голосов
/ 26 января 2019

Первоначальной проблемой было то, что .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 (постоянные), когда вы уверены, что все работает нормально - чтобы избежать проблем с кэшированием.

...