SSL в WordPress. Установка сертификата от Let’s Encrypt и настройка https:// на сайте

Владислав Белецкий
Владислав Белецкий .
Категория:
Комментариев: 0

Первоначально этот пост был опубликован, ещё когда не было бесплатных сертификатов 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
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии