HTTPS для WordPress: полный гайд по безопасному переходу

HTTPS для WordPress: полный гайд по безопасному переходу

Ваш сайт на WordPress до сих пор помечен в браузере как «небезопасный»? Это не просто надпись — это сигнал для ваших пользователей и потеря доверия. Пора это изменить!

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

Но простого получения SSL-сертификата мало. Самое интересное начинается потом — настройка WordPress. Без правильных действий вас ждут битые ссылки, ошибки в консоли и знаменитая ошибка «To many redirects», которая может заблокировать доступ к админке.

Вы узнаете, как правильно сменить URL сайта в настройках и что прописать в критически важном файле wp-config.php, чтобы заставить WordPress работать по HTTPS. Мы разберёмся, как быть, если вы используете Cloudflare, и ваш сервер не слушает 443 порт.

Отдельная история — «переезд» вашего контента. Старые изображения и ссылки, вшитые в статьи, будут вызывать ошибки Mixed Content. Я покажу, как массово и безопасно заменить все http-ссылки на https с помощью плагина или прямого SQL-запроса.

И, конечно, без правильного редиреккта не обойтись. Вы получите готовые коды для файлов .htaccess (Apache) и конфига Nginx, которые навсегда перенаправят всех посетителей на безопасную версию сайта.

Готовы наконец-то поставить заветный замочек в адресной строке и получить все преимущества HTTPS? Тогда вперёд — все ответы ждут вас в полной статье!


Протокол безопасного соединения https стремительно набирает популярность. Если раньше такое могли себе позволит только большие компании, так как сертификаты были платными и дорогими, то сейчас любой желающий может получить сертификат от Lets Encrypt, поисковые системы обещают преимущества тем, кто использует https, а браузеры с недавнего времени начали сообщать, что подключение не безопасное, если https не используется.

Тему получения сертификата я пропущу, в этой статье я хочу поговорить о том, как выполняется настройка https wordpress при переходе на этот протокол с http, поскольку тут могут возникнуть некоторые сложности.


Содержание статьи

Настройка https в WordPress

1. Настройка URL

Первое, что надо сделать при переходе на https, это заменить старый URL сайта с http на https. Для этого откройте Панель администратора -> Настройки -> Общие:

HTTPS для WordPress: полный гайд по безопасному переходу

Затем в полях Адрес WordPress (URL) и Адрес сайта (URL) поменяйте префикс http на https и сохраните настройки.

Если вы уже перешли на https, настроили редирект и HSTS (благодаря HSTS браузер, как только поймет, что у сайта есть https версия на обычную версию вас больше не пустит даже если редиректа нет) можно воспользоваться wp-config.php чтобы включить https wordpress. Откройте файл wp-config.php в корневой директории WordPress и добавьте такие строчки:

vi wp-config.php

define('WP_HOME', 'https://losst.pro');
define('WP_SITEURL','https://losst.pro');

HTTPS для WordPress: полный гайд по безопасному переходу

2. Настройка wp-config

Затем в этот же файл надо добавить такие строки, чтобы админка тоже работала по https, иначе рискуете получить ошибку To many redirects WordPress при попытке входа в админку:

define('FORCE_SSL_ADMIN', true);
define('FORCE_SSL_LOGIN', true);

После этого уже всё должно работать, останется только исправить контент в базе данных. Но самая магия начинается если вы используете Cloudflare для обеспечения работы HTTPS, а сам сервер слушает подключения на стандартном порту 80, на 443 для SSL. В таком случае надо добавить ещё и такой код:

if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https'){
$_SERVER['HTTPS']='on';
}

Если https wordpress не работает в Nginx то в файл виртуального хоста, в секцию, где подключается FastCGI PHP добавьте такую сточку (или замените если она уже есть):

vi /etc/nginx/conf.d/losst.conf

fastcgi_param HTTPS 'on';

3. Настройка контента

Дальше вы ещё можете встретить в консоли разработчика Chrome сообщения Mixed content, но они уже не будут влиять на отображение страницы, это картинки и ссылки, которые вы добавляли вручную и в статьях. Их надо исправить. Вы можете использовать плагин Better Search Replace. Надо заменить все ссылки на ваш сайт с http на https, например:

HTTPS для WordPress: полный гайд по безопасному переходу

При первом запуске можно выполнить холостой поиск, где программа только покажет какие изменения следует внести, а уже потом заменять. Также всё можно сделать через базу данных. Перед внесением каких-либо изменений сделайте резервную копию базы данных. Затем подключитесь к базе данных, например, через phpMyAdmin или терминал, а потом выполните такой запрос:

UPDATE `wp_posts` SET post_content = REPLACE(post_content, "src='http://losst.pro", "src='https://losst.pro")
WHERE post_content LIKE "%src='http://losst.pro%";

Естественно, что домен losst.pro надо заменить на ваш. Далее вы можете пройтись по страницам сайта и посмотреть нет ли ошибок Mixed Content в консоли разработчика и исправить оставшиеся проблемы вручную.

4. Редирект

Последнее, что надо сделать - это настроить редирект на https wordpress. Это нужно для корректной работы с вашим сайтом поисковиков. Если вы используете веб-сервер Apache, то можно создать файл .htaccess в директории сайта с таким содержимым:

vi .httaccess

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

Для nginx следует создать в файле вашего виртуального хоста дополнительный хост:

vi /etc/nginx/conf.d/losst.conf

server {
listen 80;
server_name losst.pro www.losst.pro;
rewrite ^ https://$server_name$request_uri? permanent;
}

Здесь аналогично надо заменить домен на ваш. Теперь всё готово.

Выводы

В этой небольшой статье мы разобрали как выполняется настройка https WordPress, это процесс довольно трудоемкий и затратный в плане времени, зато вы получаете преимущество в плане защищенности трафика, да и многие API уже без https работать с вами не будут. С какими проблемами вы сталкивались при настройке HTTPS и как решили? Напишите в комментариях!

Оставить комментарий


Кликните на изображение чтобы обновить код, если он неразборчив