2016-01-08 3 views
1

У меня проблема с перенаправлением .htaccess и https..htaccess: перенаправление http до https не работает

Прежде всего, я проконсультировался с этими ссылками, чтобы найти решение, но никто не мог мне помочь.

Список ссылок:

Когда я загрузить страницу с http, .htaccess перенаправляет меня на https, но когда я загружаю страницу https, у меня есть бесконечный цикл.

Вот мой .htaccess код:

RewriteEngine on 

RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 

RewriteCond %{HTTP_HOST} ^(api|www|dev|stefano|sav)\. 
RewriteCond %{REQUEST_URI} !^/(api|www|dev|stefano|sav)/ 
RewriteCond %{DOCUMENT_ROOT}/%1 -d 
RewriteRule ^(.*)$ %1/$1 [L] 

ли кто-нибудь может помочь мне создать условие переадресации (HTTP на HTTPS)?

+0

Возможный дубликат [Переадресация цикла во время http: // https: // перенаправление] (http://stackoverflow.com/questions/939592/redirect-loop-during-http-to-https-redirect) –

+1

@ syedmohamed Это не то, что я ищу, но спасибо. – SatanicGeek

ответ

2

Вы убрав Rewrite Flags Вы должны сказать ему, заставить перенаправление с R флагом и необязательно иметь код статуса, который рекомендуется 301, 302 и т.д.

RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

Кстати, каждый пример вы связаны с показывает ответ, используя R flag, не знаете, почему вы не использовали точные примеры :)

Решение, если позади устройств, таких как балансировщик нагрузки.

RewriteCond %{HTTP:X-Forwarded-Proto} !https 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
+0

Он не работает с флагами. У меня есть ошибка (ошибка 500) – SatanicGeek

+0

Тогда есть другая проблема. Вы должны использовать флаги. Что говорит ваш журнал ошибок apache для ошибки 500? –

+0

Ох. Я не могу получить доступ к файлу журнала. Я поговорю с моей ИТ. – SatanicGeek

1

Я боролся с этой проблемой в течение нескольких часов. Кажется, мне нужно решение для систем за балансировщиком нагрузки. Возможно, это потому, что я использую Cloudflare с моим сайтом.

RewriteCond %{HTTP:X-Forwarded-Proto} !https 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

После добавления вышеуказанных строк в мой файл .htaccess, я удалил кэш на Cloudflare и нагрузках сайта, как это должно быть.