После получения сертификата на VPS сервере нужно правильно настроить работу сайта на WordPress через защищенный протокол.
Последняя статья по редиректам.
Смотрите также статью получение бесплатного SSL сертификата. А если у вас панель Vesta, то установка сертификата ещё проще.
Отправляем весь трафик с http на https
Первая проблема, которая возникнет после установки сертификата – отсутствие замочка в адресе сайта, при заходе на него через https. Это происходит из-за того, что изображения, стили и скрипты продолжают подключаться через обычный протокол http.
А если заглянуть в код сайта через инспектор браузера, то там возле таких элементов, можно заметить сообщения с предупреждением, что данные передаются незашифровано.
Для начала я думал проблема в подключении файлов через:
И если её заменить на:
то всё должно заработать. Из WordPress документации следует, что get_bloginfo отдаёт адрес сайта без шифрования, в то время как get_template_directory_uri вставляет сразу с https. Но это проблемы не решило. Можно пути не менять.
Также в Интернете встречаются рекомендации внести в файл wp-config.php следующие параметры:
define('WP_HOME','https://ploshadka.net');
define('WP_SITEURL','https://ploshadka.net');
Однако, если точно следовать статье по получению сертификата SSL и дальнейшей настройки описанной в текущей статье, то это тоже не нужно.
Меняем адреса в MySQL
Заходим в phpMyAdmin. Сначала обязательно делаем резервную копию, а затем выполняем команды MySQL по замене старого URL http на новые https:
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:
#RewriteEngine On
#RewriteCond %{HTTPS} off
#RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Но иногда из-за этого можно получить ошибки, браузер будет ругаться на превышение редиректов:
И страница открываться не будет.
Рабочая настройка для дружелюбных ссылок на WordPress в файле htaccess выглядет так:
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Добрый день. На своем сайте я установил https протокол, после этого сайт потерял свои позиции и уже два года я не могу их вернуть. Подскажите в чем причина и что делать? Спасибо
Сама по себе установка протокола HTTPS не может повлиять плохо на поисковые системы. Как раз-таки наоборот. Ищите причину в другом.
Ещё вариант, что вы не правильно что-то установили, но это проверить просто. Если браузеры в разных операционных системах не ругаются ни на что, а сайт открывается нормально и быстро, то всё в порядке.