Редирект с http на https, .htaccess, циклическая переадресация

Если вы решили настроить https протокол в 4 версии панели ISP Manager то с большой вероятностью вы столкнетесь с проблемой циклической пере адресации: если клиент хочет, чтобы его сайт открывался исключительно по 443 порту (https), он не может этого добиться без помощи технической поддержки хостинг провайдера, а техническая поддержка хостинг провайдера в свою очередь не может этого добиться, не прибегая к ручному изменению конфига nginx.

Всё это происходит из-за того, что ISP Manager 4 изначально создаёт только одну секцию server для домена, поэтому, такой код в .htaccess:

				
					RewriteCond %{SERVER_PORT} ^80$ [OR]
RewriteCond %{HTTP} =on
RewriteRule ^(.*)$ https://domain.com/$1 [R=301,L]
				
			

Приводит к циклической переадресации.

В ISP Manager 4  server в конфигурационном файле nginx для домена создается одна секция для 443 и 80 порта. Поэтому редирект “зацикливается”.
По заявлению разработчиков ISP Manager в пятой версии панели эта проблема решена.

Рассмотрим варианты пере-адресации http версии сайта на https

Редирект можно осуществить с помощью файла .htaccess который находится в корне Вашего сайта.
Если по какой-то причине такого файла там нет, то просто создайте его самостоятельно.

Ниже приводятся несколько вариантов записей, которые нужно добавить в .htaccess:

				
					RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
 
или:

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

Если при использовании вариантов выше получаем ошибку “циклическая переадресация” , то пробуем:

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

Тажке можно выполнить пере-адресацию одного, конкретного файла. Например forhttps.php:

				
					RewriteEngine On
RewriteCond %{HTTPS} =off
RewriteCond %{REQUEST_URI} =/forhttps.php
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]
				
			

Или наоборот, нужно чтоб весь сайт, кроме одного файла(forhttp.php), перенаправляло на https:

				
					RewriteEngine On
RewriteCond %{HTTPS} =off
RewriteCond %{REQUEST_URI} !^/forhttp.php
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]
				
			

Далее рассмотрим варианты пере-адресации с помощью веб-сервера nginx.

В  nginx  указываем следующую запись:

				
					server_name <em>site_name.com</em>;
server_name www.<em>site_name.com</em>;
if ( $scheme = "http" ) {
   rewrite ^/(.*)$ https://$host/$1 permanent;
 }
				
			

Где site_name.com и www.site_name.com – варианты Вашего домена которые необходимо перенаправлять на защищенную HTTPS версию

  1. отключить редирект ( в .htaccess или в системе управления хостингом)
  2. Найти причину неправильной переадресации ( может быть модуль для защиты входа в админку, может сам код редиректа и др.)
Свежие записи
Команда RD

Команда RD и RMDIR позволяют удалять как каталоги, так и

Оборудование
help2site
Как выбрать мощность блока питания для ПК

Пошаговая инструкция как выбрать мощность блока питания под определённый компьютер. Поможет сэкономить деньги и нервы. Мощность блока питания компьютера — основа выдержки производительности Подавляющее большинство

Web-Дизайн
help2site
Как ускорить сайт на WordPress

В этой статье мы поговорим об ускорение времени загрузки сайта на CMS WordPress. Быстрая загрузка сайта необходима не только для удобства пользования сайтом посетителями, но

iOS
help2site
iPhone или iPad работает медленно? Есть способы это исправить

Вы заметили, что после установки iOS 8 ваш iPhone или iPad стал медленнее соображать (особенно актуально для iPhone/iPad старших поколений), прочтите несколько не сложных способов описанных ниже и возможно один из них поможет