С введением SSL сертификатов в Web произошли многие изменения, например, если у вас отсутствует сертификат, хотя бы бесплатный от Let’s Encrypt, то ваш сайт будет отображаться в адресной строке браузера либо красным, как не безопасный, либо без замочка, всё зависит от браузера. Такие сайты стали настораживать пользователей и многие начали искать решение перехода на https и способы подключения SSL сертификата бесплатно дабы не терять посетителей. Сегодня мы поговорим о том, как сделать перенаправление с http на https при наличии сертификата, иначе, браузер будет выдавать ошибку о том, что сайт не безопасен. Как получить SSL сертификат бесплатно, читайте в этой статье.
SSL — это протокол безопасности, он же Secure Sockets Layer. Он используется браузерами и веб-серверами, чтобы данные пользователей находились под защитой при их передаче в сети. SSL гарантирует безопасное соединение между сервером и браузером пользователя. Физически же, SSL сертификаты, это обычные файлы с данными, которые связывают между собой ключи шифрования и данные той или иной организации или физического лица. Когда пользователь просматривает сайт в браузере — сертификат обеспечивает зашифрованное соединение между веб-сервером и браузером, это можно заметить по значку закрытого замка или зеленой плашки в адресной строке и наличие префикса «https» перед доменом. Рекомендуется обязательно устанавливать SSL-сертификат всем интернет-магазинам, банкам, платежным системам и другим организациям, которые так или иначе работают с персональными данными, чтобы защитить транзакции и остановить несанкционированный доступ к информации.
На счёт того, имеют ли сайты с SSL-сертификатами преимущество в поисковой выдаче идёт много споров, но большинство склоняется к приоритету сайтов с https префиксом.
Если у вас уже имеется сертификат, можно переходить к настройке перенаправления с http://yousite.ru на https://yousite.ru автоматически. Способов решения данного вопроса очень много, мы разберём наиболее популярные из них.
Большинство настроек проводится в файле .htaccess в корне вашего сайта, но также можно обойтись и без него, если ваша система управления или хостинг поддерживает такой вариант.
Например, на хостинге beget в панели управления, в разделе «Сайты», можно нажать на шестеренку около нужного сайта и включить там «Редирект с HTTP на HTTPS».
Подробнее о редиректе через хостинг можете почитать на страницах помощи у вашего хостинг-провайдера или задав им вопрос в тех. поддержку.
Переадресация страниц через 301 редирект необходима для того, чтобы посетители, которые обратились к сайту по HTTP, автоматически попадали на сайт с HTTPS протоколом, при этом, сайт не будет склеен поисковыми системами, если всё сделать правильно.
Для настроек необходимо в папке сайта открыть файл .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]
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
SetEnvIf X-HTTPS 1 HTTPS
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP:X-HTTPS} !1
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{HTTP:X-Forwarded-Proto} !=https
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTP:X-Forwarded-Protocol} !=https
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
В системах управления сайтом (CMS) сделать перенаправление ещё проще. Достаточно изменить одну строчку.
Нужно открыть файл config.php и прописать в нём:
define('HTTPS_SERVER', 'https://yoursite.ru/');
В папке с сайтом на WordPress найти и изменить в файле wp-config.php следующую строку (если её нет, добавить):
define('FORCE_SSL_ADMIN', true);
В основном, способы перенаправления для разных CMS написаны в их документации.
Всё зависит от вашего кода, но в большинстве случаев достаточно разместить этот PHP код в начале и вы получите 301-редирект с HTTP на HTTPS с помощью PHP.
if (empty($_SERVER['HTTPS']) || $_SERVER['HTTPS'] === "off") {
$location = 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
header('HTTP/1.1 301 Moved Permanently');
header('Location: ' . $location);
exit;
}
На этом всё, теперь посетители переходя на ваш сайт через http://yoursite.ru будут автоматически перенаправлены на HTTPS://yoursite.ru. Если у вас возникли вопросы или вы знаете другие способы перенаправления, будем рады видеть это в комментариях к записи.