Первоначально этот пост был опубликован, ещё когда не было бесплатных сертификатов Let’s Encrypt, теперь же, с их появлением, произошли некоторые изменения, как минимум, на каждом сайте с SSL теперь написано «Надёжный»:
Если же у вас есть например форма авторизации на странице и нет https://, то гугл хром соответственно будет указывать «Нанадёжный», а если вы платежи по картам принимаете и нет SSL, то хром вообще с ума сойдет 😂 также все говорят о влиянии SSL на SEO, а потому с начала этого года (2017) все просто активизировались и загорелись установкой SSL-сертификата себе на сайт.
Если вы используете какой-либо хостинг, то на мой взгляд, первый шаг, связанный с заказом, продлением и установкой сертификата Let’s Encrypt должен решаться через панель хостера нажатием одной кнопки, мне нравится как это реализовано у beget, также помню, что у меня абсолютно не возникло никаких проблем с сертификатами на sprinthost.
Вообще, на мой взгляд есть два варианта настройки защищенного соединения на сайте WordPress:
SSL в админке и для страницы wp-login.php
Если вам нужно, чтобы админка сайта WordPress и страница авторизации wp-login.php
были доступны только по защищенному соединению, вставьте эту строку в файл wp-config.php
(конфигурационный файл, находится в корне сайта):
define('FORCE_SSL_ADMIN', true);
Как сделать, чтобы остальной сайт всегда был без https
Это нужно для того, чтобы страницы вашего сайта не были доступны по двум адресам одновременно (с https и без). Используем 301-й редирект. Код — в functions.php
.
/* * Запрет SSL для контента */ add_action( 'template_redirect', 'true_non_ssl_redirect', 1 ); function true_non_ssl_redirect() { if ( is_ssl() && !is_admin() ) { // если переход был по протоколу https:// и пользователь находится не в админке if ( 0 === strpos( $_SERVER['REQUEST_URI'], 'http' ) ) { wp_redirect( preg_replace( '|^https://|', 'http://', $_SERVER['REQUEST_URI'] ), 301 ); exit(); } else { wp_redirect( 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 301 ); exit(); } } }
Полностью весь сайт на SSL
Процесс перехода на https:// очень похож на процесс по смене домена. Сейчас ваша задача, чтобы везде, где на сайте был указан протокол http://, сейчас было заменено на https://. Если у вас пара тысяч страниц контента, это может стать проблемой, поэтому рекомендую воспользоваться этим инструментом, просто в поле для старого домена указываете свой сайт с http://, а там где новый домен — с https://. Отправляетесь в phpMyAdmin (через панель хостинга) и запускаете сгенерированные запросы на вкладке SQL.
RewriteEngine on # если первая строка уже присутствует в вашем .htaccess файле, то второй раз вставлять её ни к чему RewriteCond %{HTTPS} !=on RewriteRule ^(.*) https://%{SERVER_NAME}/$1 [R,L] # дальше пойдут правила постоянных ссылок WordPress, если таковые имеются
Однако у некоторых хостингов с этим кодом могут возникнуть проблемы, в таком случае не трогайте .htaccess
, а вставьте например в самое начало functions.php
:
$use_sts = true; if ($use_sts && isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') { header('Strict-Transport-Security: max-age=31536000'); } elseif ($use_sts) { header('Location: https://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'], true, 301); die(); }
Host: https://misha.agency