Переход и настройка HTTPS для WordPress

Кроме того, что сейчас Google активно всех старается перевести на https протокол, это еще и плюс к безопасности сайта. Особенно, если на Вашем сайте есть формы, регистрация, вход и т.п.

HTTPS шифрует весь трафик между сайтом и браузером, что не дает злоумышленникам получить любую информацию, которой Вы обмениваетесь с сайтом — пароли, e-mail, платежные данные.

SSL сертификаты бывают различных типов, в среднем стоят от 1500 руб до 5000 руб, но разброс цен очень большой. Есть и с подтверждением юр. лица, с поддержкой поддоменов.

Подготовка

Сначала нам необходимо получить сам SSL сертификат, можно его купить, можно использовать и бесплатный. В этой статье мы будем рассматривать самый простой случай, когда сертификат установит сам хостер. Вариант еще проще — получить в 2 клика бесплатный сертификат у Beget.

Сертификат установлен — в браузере вбиваем адрес нашего сайта, только заменяем http на https.

  • Если сайт открылся — все хорошо, переходим к следующему пункту.
  • Если не отрылся — подождите 10-15 минут и проверьте снова. Если нет — нужно разбираться, правильно ли установлен сертификат.
  • Если произошел редирект на http версию — нужно искать в плагинах, functions.php или в htaccess правила для редиректа и удалить их

Меняем адрес сайта в настройках

Заходим в Настройки – Общие и вбиваем новый адрес с https, сохраняем

меняем протокол в админке

Заходим на сайт и проверяем, например, меню или ссылки на Ваши статьи. Они должны идти уже по новому протоколу.

Если сайт перестал открываться?

Нам нужно вернуть протокол обратно и искать проблему в плагинах или functions.php самой темы.

Идем в wp-config.php и добавляем туда следующий код:

define('WP_HOME','http://yoursite.ru');
define('WP_SITEURL','http://yoursite.ru');

Где yoursite.ru заменяем на Ваш сайт с протоколом http. Таким образом мы жестко в коде прописываем старый адрес адрес сайта.

Теперь нужно найти причину поломки или редиректа. Методично отключайте плагины, убирайте код из wp-config.php и проверяйте — не заработал ли сайт. Потом смените тему на стандартную и попробуйте тоже самое. Откройте .htaccess, который лежит в корне сайта, возможно причина там.

Меняем адрес сайта в статьях

Теперь нам нужно изменить адрес ссылок в самих статьях. Делать это вручную — занятие долгое и неэффективное. Тут нам на помощь прийдет любимый search-replace.

Внимание! Перед этим шагом обязательно сделайте бекап!

Вбиваем слева адрес сайта с http, справа адрес с https. Жмем Dry Run. Проверяем внизу в результатах все ли впорядке, все ли правильно меняется. Жмем Live Run. И проверяем ссылки в наших статьях.

смена протокола http на https через search-replace

Теперь все ссылки должны идти по новому протоколу.

Мы в своей работе никогда не используем замену чего либо напрямую в базе. Т.к. WordPress часть настроек хранит в сериализованных массивах и они зависят от длинны строки. Меняя адрес — Вы меняете длинну строки и эти данные могут просто перестать отображаться. Мы писали об этом на другом проекте: пропали виджеты при переносе сайта.

Если что-то пошло не так?

Скорей всего Вы неправильно сделали замену search-replace. Нужно вернуть бекап. Если все стало впорядке — значит проблема именно в замене через search-replace.

Повторите шаг, но в этот раз все еще раз перепроверьте, правильно ли выполняется замена при Dry Run. Если проблему устранить не получается — обратитесь за консультацией к специалисту.

Меняем протокол в Вашей теме

Если Вы купили одну из наших тем или использовали стандартную WordPress — этот шаг можно смело пропускать. Дело в том, что некоторые разработчики указывают в теме прямые пути до файлов, картинок, скриптов. Такое встречается не часто, но в нашей практике каждая 7 тема с прописанными вручную путями.

Сюда же входит различное подключение стилей и скриптов с внешних ресурсов. Виджеты обратных звонков, чаты, счетчики, попапы и пр.

Выкачиваете свою тему на компьютер. Делаем поиск фрагмента «http://» в файлах Вашей темы. Например, с помощью Sublime это можно сделать сразу во всех файлах темы. Меняем пути на правильные, а еще лучше переписываем через функции (необходимы минимальные знания в разработке).

В крайнем случае можно протокол не указывать и менять ссылки таким образом:

http://site.ru/ на //site.ru

Правильный редирект с http на https

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

В файле .htaccess пропишите в начало:

RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.*)\ HTTP/ [NC]
RewriteCond %{HTTPS} off [NC]
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI}%{QUERY_STRING} [R=301,QSA,L]

Если не сработало, попробуйте

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

Здесь мы устанавливаем редирект на серверном уровне. Обратите внимание на то, что мы явно указываем на 301 редирект.

Второй вариант, используя php:

add_action('init', 'redirect_http_to_https');
function redirect_http_to_https(){
    if( is_ssl() ) return;

    if ( 0 === strpos($_SERVER['REQUEST_URI'], 'http') )
        wp_redirect( set_url_scheme( $_SERVER['REQUEST_URI'], 'https' ), 301 );
    else
        wp_redirect( 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 301 );
    exit;
}

Данный код лучше разместить в своем плагине или в папке mu-plugins, в крайнем случае в functions.php Вашей темы. Чтобы при смене темы Вы не потеряли все редиректы.

Можно использовать оба варианта, но первый предпочтительнее, чтобы запросы обрабатывал сервер, а не PHP.

Как смена протокола влияет на SEO

Не забудьте сменить адрес сайта в robots.txt, указать новое главное зеркало в панели вебмастера поисковых систем.

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

В данный момент Google обещает отдавать предпочтение сайтам с https, как оно будет на практике покажет время.

Рекомендации Яндекса

Яндекс дал свои рекомендации по переезду, подробнее тут. Обязательно рекомендую изучить. Если коротко:

  1. Добавить новый сайт в панель вебмастера
  2. Настроить в robots директиву Host, важно, чтобы robots.txt был одинаковый у обоих сайтов
  3. После признания обоих сайтов зеркалами, зайти и сменить протокол в вебмастере «Настройки индексирования — Главное зеркало». Подождать несколько недель, пока не определиться главное зеркало.
  4. Настроить редирект со старого протокола на новый.

Рекомендации Google

Про перенос сайта для Google можно прочитать тут и тут.

  1. Добавить новый сайт в Search Console
  2. Убедиться, что со старого сайта с каждой страницы идет 301 редирект на новый
  3. Использовать инструмент Изменение адреса в настройках.

Как правильно переехать без потери позиций

  1. Убеждаемся, что все страницы правильно работают с https
  2. Прописываем в robots дерективу Host с https
  3. Добавляем новый сайт (с https) в Вебмастер Яндекса
  4. Ждем индексации нового сайта, указываем его главным зеркалом
  5. Ставим редиректы 301 с http на https
  6. Добавляем новый сайт в Вебмастер Гугла
  7. У старого изменяем адрес на новый
Курс WordPress-разработчик
Если Вам понравилась статья — поделитесь с друзьями
Сергей
Создаю сайты уже больше 10 лет, с WordPress начал работать в 2008 году. Основатель и руководитель WPShop.ru