Перевод WordPress на HTTPS: 2 способа

Дата публикации: 22.12.2017

perekhod-wordpress-na-httpsПриветствую вас, друзья! 🙂

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

В предыдущих статьях я детально рассмотрел основные этапы установки SSL сертификата на сайт и переезда на HTTPS в целом, некоторые из которых обладают существенными нюансами в зависимости от платформы, на которой разработан ваш ресурс.

Решить данный обзор тонкостей я решил с самой массовой и популярной CMS на сегодняшний день — с WordPress.

Поэтому сегодня будет рассмотрен конкретно переход WordPress на HTTPS, а также перечень необходимых мер и инструментов, которые понадобятся нам в процессе.

Как перевести WordPress на HTTPS: вступление

Перед тем, как мы начнём, пару слов о том, с чем я буду работать в данной статье для демонстрации своих действий.

В предыдущей статье я рассказывал о том, как создать поддомен сайта, в рамках которой был зарегистрирован поддомен данного сайта ssl.cccp-blog.com, задумывавшийся изначально как раз как площадка для экспериментов с установкой и настройкой SSL сертификатов на сайт (отсюда и такое название).

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

В качестве графического шаблона я решил использовать стандартную тему Twenty Seventeen.

Итак, WordPress установлен, шаблон выбран. Также я уже приобрёл SSL сертификат и установил его на сервер, подключив его к сайту через панель администирования моего хостинг-провайдера. Весь процесс подробно описан в статье о том, как установить SSL сертификат на сайт.

Теперь можно приступать непосредственно к переходу WordPress с HTTP на HTTPS, что мы сделаем сегодня двумя способами: с помощью плагина и без него.

Итак, начнём с самого простого варианта настроек HTTPS для WordPress сайта, который подойдёт абсолютному большинству и потребует минимум знаний — с установки плагинов, которые всё сделают за нас 🙂

Перевод WordPress на HTTPS с помощью плагина

Для настройки HTTPS на WordPress сайте существует масса готовых решений в виде плагинов. С некоторыми из них я вас уже знакомил в статье о мерах по безопасности WordPress сайтов.

Сегодня же наглядно продемонстрирую использование одного из них для установки SSL сертификата на WordPress сайт с дальнейшей настройкой защищённого соединения.

Я решил остановиться на Really Simple SSL. Выбор мой был основан на статистике данного WordPress HTTPS плагина: более 600 000 скачиваний и оценка 5 из 5 на основании 333 оценок пользователей.

Ознакомиться с полным описанием решения, а также скачать его вы можете здесь — https://ru.wordpress.org/plugins/really-simple-ssl/

Разработчики утверждают, что плагин определяет SSL сертификат, установленный на сервере, в имени которого был указан текущий сайт. А затем он подключает его и делает перенаправление запросов с HTTP адресов на HTTPS.

Причём, всё это происходит путём нажатия на одну-единственную кнопку в течении нескольких секунд.

Чтобы убедиться, что это на самом деле так, для начала заходим в админку сайта и устанавливаем плагин Really Simple SSL любым известным вам способом. Более подробно о том, как можно сделать установку плагинов WordPress, написано в статье по указанной ссылке.

После установки активируем плагин, после чего на экране у нас появится следующее сообщение:

http://cccp-blog.com/wp-includes/images/banners/templatemonster/banner_content.jpg

wordpress-redirekt-na-https

Здесь, как видите, разработчики говорят о необходимости изменения хардкодных ссылок в тексте сайта WordPress с HTTP на HTTPS.

В частности, в CSS и JavaScript файлах, но они могут встречаться и в других местах, например, в тексте статей, который хранится в базе данных.

Чтобы туда добраться, есть два способа: использовать сторонние утилиты и скрипты для работы с БД или командную строку WordPress, которая доступна после установки утилиты WP-CLI.

Если вам по душе первый способ, то могу порекомендовать PHP скрипт Search Replace DB, который предоставляет графический интерфейс для работы с БД и поиска в ней информации с дальнейшей заменой.

Если же вы трушный кодер и любите консоль, то в WP-CLI вам потребуется следующая команда:

wp search-replace "//ваш_сайт.com" "https://ваш_сайт.com"

В прочем, всё это не обязательно делать прямо сейчас и вполне можно отложить на потом. А пока вернёмся к настройкам нашего WordPress HTTPS плагина и сообщению об их активации.

После нажатия на кнопку с надписью Go ahead, activate SSL! в информационном окне плагин произвёл на сайте необходимые настройки для активации соединения по HTTPS. В частности, он добавил в wp-config.php следующий код в самое начало файла:

//Begin Really Simple SSL Load balancing fix
$server_opts = array("HTTP_CLOUDFRONT_FORWARDED_PROTO" => "https", "HTTP_CF_VISITOR"=>"https", "HTTP_X_FORWARDED_PROTO"=>"https", "HTTP_X_FORWARDED_SSL"=>"on", "HTTP_X_FORWARDED_SSL"=>"1");

foreach( $server_opts as $option => $value ) {
    if ( (isset($_ENV["HTTPS"]) && ( "on" == $_ENV["HTTPS"] )) || (isset( $_SERVER[ $option ] ) && ( strpos( $_SERVER[ $option ], $value ) !== false )) ) {
        $_SERVER[ "HTTPS" ] = "on";

        break;
    }
}
//END Really Simple SSL

Т.е. он установил глобальную серверную переменную HTTPS в «on» для дальнейших проверок в коде на предмет, передаёт ли сайт информацию по HTTPS или нет. Также плагин поменял адрес сайта с учётом нового протокола.

На этом наша работа подошла к концу 🙂 Т.е. для активации перевода WordPress на HTTPS нам действительно потребовалось нажать лишь одну-единственную кнопку.

После этого я решил подробно изучить настройки Really Simple SSL в админке WordPress, которые выглядят следующим образом:

pereadresaciya-https-wordpress

Как видите, вся конфигурационная панель состоит из трёх вкладок: Конфигурация, Настройка и Отладка. На первой из них, которая открывается по умолчанию, содержатся индикаторы состояния различных настроек HTTPS на WordPress сайте.

Здесь же вы увидите сообщения о критических ошибках, если таковые будут найдены.

Вкладка «Настройка» имеет следующий вид:

kak-perevesti-wordpress-na-https

Здесь расположены все основные настройки HTTPS соединения с сайтом, осуществляемые данным плагином. Стоит сказать, что они, как и само решение, невероятно просты и понятны.

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

Также установлен редирект с HTTP на HTTPS на WordPress уровне и JavaScript. Как видите, плагин позволяет выполнить перенаправление различными способами.

На практике достаточно WordPress редиректа на HTTPS, JavaScript сами разработчики рекомендуют использовать в самую последнюю очередь, если остальные варианты перенаправлений не будут работать.

http://cccp-blog.com/wp-includes/images/banners/partner_web_studio/banner_728x90.gif

И это весьма логично, т.к. WordPress переадресация на HTTPS в JS коде будет медленнее остальных и будет содержаться в клиентском коде, загружаемом в браузер ваших пользователей, где может быть изменён.

Разработчики Really Simple SSL рекомендую использовать редирект с HTTP на HTTPS на уровне веб-сервера Apache, который производится при установке соответствующей галочки в настройках.

При этом плагин добавит следующий код в .htaccess файл вашего сайта:

# BEGIN rlrssslReallySimpleSSL rsssl_version[2.5.23]

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

# END rlrssslReallySimpleSSL

Также на данной странице настроек плагина имеется поле Stop editing the .htaccess file, в котором нужно поставить галочку, если вы захотите отредактировать код, добавляемый плагином в .htaccess, чтобы ваши изменения не перезаписались значениями по умолчанию.

И ещё здесь имеется поле Отладка, при установлении галочки в которое вы сможете получить лог действий, выполняемых плагином. Лог можно увидеть на соседней вкладке настроек с одноименным названием, которая выглядит так:

ustanovka-wordpress-https

После того, как наш WordPress сайт был настроен для работы по HTTPS протоколу с помощью данного плагина, в панели администратора WordPress у нас появится следующее информационное сообщение:

wordpress-https-plugin

В нём говорится о том, что нужно произвести необходимые настройки в Google Analytics и Google Webmaster, суть которых заключается в добавлении нового адреса сайта для индексации его содержимого.

О том, как это сделать, можете узнать из инструкции от разработчика плагина Really Simple SSL. Или же воспользоваться официальной инструкцией от Google.

То же самое нужно сделать и в других инструментах аналитики, которыми вы пользуетесь: LiveInternet, Яндекс.Метрика и т.д.

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

Даже если вбить в адресную строку браузера прямой URL страницы сайта, содержащий протокол HTTP, произойдёт мгновенное перенаправление запроса на HTTPS адрес.

Переход благодаря данному плагину произошёл действительно очень быстро и легко. Я даже не поверил, что такое возможно 🙂

Чтобы убедиться, что переход WordPress на HTTPS произошёл и успешно завершился, я для уверенности просмотрел SSL сертификат, использующийся сайтом для работы по HTTPS протоколу, в браузере (пользуюсь Google Chrome):

kak-ustanovit-ssl-sertifikat-na-sajt-wordpress

Всё верно, данные сертификата отобразились корректно (на данный момент в сертификате содержится только дата оформления и регистратор).

На этом переезд WordPress на HTTPS с помощью плагина Really Simple SSL торжественно объявляю закрытым 🙂

Переход WordPress на HTTPS без плагинов

Однако, среди пользователей и разработчиков WordPress сайтов есть определённая категория лиц, которая люто презирает использование плагинов, предпочитая делать всё своими руками путём изменения кода сайта.

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

Итак, после установки SSL сертификата на сервер, где расположен наш сайт, и подключения его к сайту, для перевода WordPress на HTTPS нам первым делом нужно будет изменить адрес сайта с учётом нового протокола.

Самый простой способ это сделать — через панель администратора. Заходим в Настройки > Общие и меняем в адресе сайта протокол HTTP на HTTPS:

wordpress-https-nastrojka

Данный шаг нужен для того, чтобы корректно открывались ссылки на страницы сайта, указанные в относительном формате.

Кстати! Если где-либо на вашем сайте имеются ссылки в абсолютном формате, прописанные через HTTP протокол, замените их на HTTPS-аналоги.

Также изменить адрес сайта и его главной страницы можно путём изменения файла wp-config.php, добавив в него следующие директивы:

define('WP_HOME', 'https://имя_сайта');
define('WP_SITEURL', 'https://имя_сайта');

Также в этот же файл необходимо будет добавить следующий код:

define ('FORCE_SSL_ADMIN', true);

Данная константа необходима для того, чтобы заставить все логины и все сеансы администратора выполняться через SSL. Размещать её следует перед тем, как подключается файл wp-settings.php в коде wp-config.php.

Также в редактируемом нами файле при использовании предыдущей конструкции нужно будет добавить следующий код:

if (strpos ($ _ SERVER ['HTTP_X_FORWARDED_PROTO'], 'https')! == false) {
    $ _SERVER [ 'HTTPS'] = 'on';
}

Примерно то же самое добавлялось и при переходе WordPress на HTTPS с помощью плагина Really Simple SSL. А также о данном действии упоминается в руководстве для разработчиков WordPress по управлению сайтом через SSL.

Как там объясняется, если WordPress размещен за обратным прокси-сервером, который предоставляет SSL, но сам размещен без SSL, FORCE_SSL_ADMIN сначала отправит любые запросы в бесконечный цикл переадресации.

Чтобы этого избежать, нужно настроить WordPress для распознавания заголовка HTTP_X_FORWARDED_PROTO (при условии, что вы правильно настроили обратный прокси для установки этого заголовка).

На этом действия в wp-config.php закончены, равно как и на самом WordPress сайте.

Для следующего шага нам потребуется правка конфигурационных файлов веб-серверов Apache или Nginx, через которые наш сайт запускается. Нужно будет прописать правила для 301 редиректа запросов c HTTP на HTTPS адреса.

Для Apache можете смело взять код, который добавляется плагином Really Simple SSL в .htaccess, приведённый мною ранее.

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

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

Как этого добиться, подробно описано в публикации с пошаговой инструкцией по переезду на HTTPS, ссылку на которую я приводил ранее в тексте.

На моём же тестовом сайте ssl.cccp-blog.com, как я уже сказал, все действия по установке HTTPS на WordPress ограничились двумя пунктами, чего вполне достаточно для исправной работы сайта, в чём вы сами можете убедиться, перейдя на него.

Как видите, процесс установки SSL сертификата на WordPress сайт достаточно прост и займёт у вас от силы пару минут. Причём, это касается как использования плагина, как и произведения действий без него.

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

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

Поэтому рекомендую вам подписаться на уведомления проекта, чтобы быть в курсе выхода нового материала, напоминания о чём будут приходить вам на электронную почту.

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

Также не забывайте писать в комментариях о том, что понравилось, не понравилось и о том, что я, может быть, забыл упомянуть.

Очень рассчитываю на качественный фидбэк 🙂

До новых встреч!

Понравилась статья? Поделись с друзьями:
  1. 5
  2. 4
  3. 3
  4. 2
  5. 1
6 голосов, в среднем: 4.3 из 5

Похожие темы

2 комментария к статье "Перевод WordPress на HTTPS: 2 способа"

  1. Anna

    Здравствуйте! Наконец-то я нашла то, что так давно ищу. Пересмотрела много материалов, но ничего пока взять не смогла, так как то, что предлагают, для меня очень сложно. Я имею ввиду работу с кодом блога. Но вы предложили идеальный для меня вариант перехода с http на https при помощи плагина. Очевидно, это и будет мой вариант. Взяла вашу статью в закладки и буду очень скрупулёзно изучать пошагово и делать тоже пошагово. Скажите, а плагин не удалять, когда он закончит работу свою? А бэкап блога делать? Если что-то будет непонятно или пойдёт не так, можно ли к вам обратиться за помощью?

    1. Pashaster Автор

      Добрый день! Спасибо за отзыв 🙂 Приятно, когда твой труд ценят. По поводу Ваших вопросов:

      • Бэкап файлов сайта нужно делать при любых глобальных изменениях на сайте. И переход с HTTP на HTTPS — не исключение. Нужен как бэкап файлов сайта, так и БД (обязательно)
      • Плагин не нужно удалять, много места он не займёт, и сайт в производительности с ним не потеряет. А вот при его отключении могут возникнуть проблемы при установке HTTPS соединения. Поэтому я бы не рисковал 🙂

      По поводу помощи — я всегда открыт, обращайтесь 🙂 Но, думаю, что проблем у вас не должно возникнуть, если чётко следовать инструкции в статье.

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

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