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

Admin MySQL, WordPress

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

Последняя статья по редиректам.

Смотрите также статью получение бесплатного SSL сертификата. А если у вас панель Vesta, то установка сертификата ещё проще.

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

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

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

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

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

<?php get_bloginfo('template_url'); ?>

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

<?php echo get_template_directory_uri(); ?>

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

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

define('FORCE_SSL_ADMIN', true);
define('WP_HOME','https://ploshadka.net');
define('WP_SITEURL','https://ploshadka.net');

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

Для перехода WordPress на зашифрованный трафик есть одна правильная и необходимая команда. Её нужно внести в файл wp-config.php:
$_SERVER['HTTPS']='on';

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

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

UPDATE wp_options SET option_value = REPLACE(option_value, 'http://ploshadka.net', 'https://ploshadka.net');
 
UPDATE wp_posts SET post_content = REPLACE (post_content, 'http://ploshadka.net', 'https://ploshadka.net');
 
UPDATE wp_posts SET pinged = REPLACE (pinged, 'http://ploshadka.net', 'https://ploshadka.net');

UPDATE wp_comments SET comment_content = REPLACE (comment_content, 'http://ploshadka.net', 'https://ploshadka.net');
 
UPDATE wp_posts SET guid = REPLACE (guid, 'http://ploshadka.net', 'https://ploshadka.net');
 
UPDATE wp_postmeta SET meta_value = REPLACE (meta_value, 'http://ploshadka.net', 'https://ploshadka.net');
 
UPDATE wp_posts SET guid = REPLACE (guid, 'http://ploshadka.net', 'https://ploshadka.net') WHERE post_type = 'attachment';

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

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

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

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

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

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

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

Файл .htaccess

Можно также попробовать перевести сайт на зашифрованный трафик через .htaccess:

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

Но иногда из-за этого можно получить ошибки, браузер будет ругаться на превышение редиректов:

Could not open the page, too many redirects

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

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

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

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” (2)

  • Аватар
    Дмитрий
    04.01.2019 в 12:15

    Добрый день. На своем сайте я установил https протокол, после этого сайт потерял свои позиции и уже два года я не могу их вернуть. Подскажите в чем причина и что делать? Спасибо

    • Admin
      Admin
      Автор записи
      06.01.2019 в 14:27

      Сама по себе установка протокола HTTPS не может повлиять плохо на поисковые системы. Как раз-таки наоборот. Ищите причину в другом.

      Ещё вариант, что вы не правильно что-то установили, но это проверить просто. Если браузеры в разных операционных системах не ругаются ни на что, а сайт открывается нормально и быстро, то всё в порядке.

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

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