Главная » Безопасность

Как настроить перенаправление (редирект) с HTTP на HTTPS?

Мы рекомендуем использовать SSL сертификаты для сайтов. Уже сейчас поисковые алгоритмы Google учитывают SSL и HTTPS как один из факторов ранжирования.
Здесь вы можете получить SSL сертификат абсолютно бесплатно.

Для создания безусловного перенаправления (редиректа) сайта с HTTP на HTTPS-протокол, необходимо добавить в файл .htaccess следующее:
RewriteEngine on  
RewriteBase / 
RewriteCond %{SERVER_PORT} !^443$  
RewriteCond %{HTTPS} off  
RewriteRule ^(.*)$ https://domain.com/$1 [R=301,L]
  • Здесь domain.com - имя Вашего домена.
  • Если в корневой директории сайта нет файла .htaccess, то просто создайте файл с таким именем.
Для перенаправления на https://www. необходимо добавить в файл .htaccess следующее:
RewriteEngine On
RewriteCond !{HTTPS} off
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Как настроить перенаправление с HTTPS на HTTP?

Если необходимо настроить обратный редирект (к примеру, с https://domain.com/ на http://domain.com/), то добавьте в файл .htaccess следующие строки:
RewriteEngine on 
RewriteCond %{HTTPS} on 
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}

Настройка перенаправления в ISPmanager 4:

Добавьте в файл .htaccess следующие строки:
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Если на сервере с панелью ISPmanager 4 установлен Apache + Nginx, при этом ни один из указанных редиректов не сработал, и вызывает циклическую переадресацию (310 To many redirects) в браузере, то добавьте несколько строк в соответствующий location домена nginx.conf (выделены красным цветом):

location / {
proxy_pass IP
proxy_redirect IP
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
if ( $scheme = "http" ) {
rewrite ^/(.*)$ https://$host/$1 permanent;
}

}

Вариант 2:

Делаем 2 секции server по примеру:

	server {
		server_name SITE.COM www.SITE.COM;
		listen 88.77.55.66;
                rewrite ^/(.*)$ https://$host/$1 permanent; 
	}
 
	server {
		server_name SITE.COM www.SITE.COM;
		listen 88.77.55.66:443 ssl;
		set $root_path /var/www/../data/www/SITE.COM;
		location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ {
			root $root_path;
			access_log /var/www/nginx-logs isp;
			access_log /var/www/httpd-logs/SITE.COM.access.log ;
			error_page 404 = @fallback;
		}
		location / {
			proxy_pass http://88.77.55.66:81;
			proxy_redirect http://88.77.55.66:81/ /;
			proxy_set_header Host $host;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_set_header X-Forwarded-Proto $scheme;
			proxy_set_header X-Real-IP $remote_addr;
		}
		location ~* ^/(webstat|awstats|webmail|myadmin|pgadmin)/ {
			proxy_pass http://88.77.55.66:81;
			proxy_redirect http://88.77.55.66:81/ /;
			proxy_set_header Host $host;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_set_header X-Forwarded-Proto $scheme;
			proxy_set_header X-Real-IP $remote_addr;
		}
		location @fallback {
			proxy_pass http://88.77.55.66:81;
			proxy_set_header Host $host;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_set_header X-Forwarded-Proto $scheme;
			proxy_set_header X-Real-IP $remote_addr;
		}
		include /usr/local/ispmgr/etc/nginx.inc;
		ssl_certificate /var/www/httpd-cert/SITE.COM.chained.crt;
		ssl_certificate_key /var/www/httpd-cert/SITE.COM.key;
	}

Настройка перенаправления в WordPress:

Добавляем в файл wp-config.php следующее:
define('WP_SITEURL', 'https://site.com');
define('WP_HOME', 'https://site.com');

define('FORCE_SSL_ADMIN', true);
define('FORCE_SSL_LOGIN', true);
if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
       $_SERVER['HTTPS']='on';

Материалы по теме:

Вместе с этим смотрят: