Настройка HTTPS для сайта на WordPress

После получения сертификата на VPS сервере нужно правильно настроить работу сайта на WordPress через защищенный протокол.

Смотрите также статью получение бесплатного SSL сертификата.

Отправляем весь трафик с http на https

Первая проблема, которая возникнет после установки сертификата – отсутствие замочка в адресе сайта, при заходе на него через https. Это происходит из-за того, что изображения, стили и скрипты продолжают подключаться через обычный протокол http.

А если заглянуть в код сайта через инспектор браузера, то там возле таких элементов, можно заметить сообщения с предупреждением, что данные передаются незашифровано.

The page at https://www….ru/ was not allowed to run insecure content from …

Для начала я думал проблема в подключении файлов через:

И если её заменить на:

то всё должно заработать. Из WordPress документации следует, что get_bloginfo отдаёт адрес сайта без шифрования, в то время как get_template_directory_uri вставляет сразу с https. Но это проблемы не решило. Можно пути не менять.

Также в Интернете встречаются рекомендации внести в файл wp-config.php следующие параметры:

Однако, если точно следовать статье по получению сертификата SSL и дальнейшей настройки описанной в текущей статье, то это тоже не нужно.

Для перехода WordPress на зашифрованный трафик есть одна правильная и необходимая команда. Её нужно внести в файл wp-config.php:

Меняем адреса в MySQL

Заходим в phpMyAdmin. Сначала обязательно делаем резервную копию, а затем выполняем команды MySQL по замене старого URL http на новые https:

В коде выше замените адрес сайта на свой.

Я учел все данные с http в своей базе. Возможно в вашем случае поменяется не все URL адреса. Для проверки заходим в поиск и вводим свой сайт:

Смотрим результаты:

Видим, что сайтов с http:// больше нигде нет, кроме одного значения. Заходим внутрь и исправляем. У вас могут быть значения указаны в других местах.

При замене адреса http на https в MySQL могут полететь какие-нибудь настройки плагинов. У меня так произошло с плагином Contextual Related Posts. В этом случае, заново придётся настроить плагин.

Встречающиеся ошибки

Не получается войти в панель администратора wp-login.php или /wp-admin/. Прежде всего надо почистить cookie.

Файл .htaccess

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

1
Could not open the page, too many redirects

И страница открываться не будет.

Рабочая настройка для дружелюбных ссылок на WordPress в файле htaccess выглядет так:

1
2
3
4
5
6
7
8
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

И этого достаточно для работы HTTPS.

Не нужны никакие принудительные переводы на зашифрованный трафик, вроде:

1
2
3
4
# Force HTTPS
#RewriteEngine On
#RewriteCond %{HTTPS} off
#RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Вместо этого лучше указать верные настройки в файле конфигураций Nginx. Они уже приведены выше.

English Query (запросы по теме на английском языке)

Can't access wordpress admin https

bloginfo() and get_template_directory_uri() with SSL

get_template_directory_uri() returns http instead of https

Добавить комментарий

Напишите свой комментарий, если вам есть что добавить/поправить/спросить по теме текущей статьи: "Настройка HTTPS для сайта на WordPress".

Ваш e-mail не будет опубликован. Обязательные поля помечены *