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

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

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

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

Подготовка

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

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

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

У Beget также есть бесплатный хостинг для сайта wordpress. Пользуйтесь!

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

Заходим в Настройки – Общие и вбиваем новый адрес с 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

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

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

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

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]

Здесь мы устанавливаем редирект на серверном уровне. Обратите внимание на то, что мы явно указываем на 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.

С помощью Clearfy Pro

Если боитесь что-то повредить в файле .htaccess, можете попросить поддержку вашего хостинга сделать перевод на https за вас. Но проще всего включить соответствующую опцию в плагине Clearfy WPShop на вкладке «SEO». Там же есть ссылка на документацию с пояснениями по данному функционалу.

переход на https в Clearfy Pro

Этот мультифункциональный плагин сейчас есть практически у каждого опытного вебмастера, так как он закрывает сразу множество «болей» сайтостроителя. Если у вас его еще нет, самое время приобрести с читательской скидкой.

Промокод на Clearfy Premium

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

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

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

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

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

UPD: Яндекс отказался от директивы Host, сейчас для Яндекса инструкция простая. Добавили домен, сразу настроили редирект.

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

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

Ещё читайте: идеальный robots txt для wordpress-сайта с помощью плагина и без него.

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

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

  1. Добавить новый сайт в Search Console
  2. Убедиться, что со старого сайта с каждой страницы идет 301 редирект на новый

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

  1. Убеждаемся, что все страницы правильно работают с https
  2. Прописываем в robots дерективу Host с https. Не актуально.
  3. Добавляем новый сайт (с https) в Вебмастер Яндекса
  4. Ставим редиректы 301 с http на https
  5. Добавляем новый сайт в Вебмастер Гугла

Как только вы начинаете задумываться о настройке https и получении сертификата, часто сразу же возникает еще один вопрос (просто потому, что эти настройки у хостера часто расположены рядом): как перейти на новую версию php 7 4 и выше.

Если не соблюдать последовательность действий при переходе на https, можно получить ошибку. Читайте, как исправить err too many redirects, если такая ошибка выскочила на вашем сайте после смены протокола.

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

Если Вам понравилась статья — поделитесь с друзьями
Сергей
Создаю сайты уже больше 10 лет, с WordPress начал работать в 2008 году. Основатель и руководитель WPShop.ru.
Обсуждение: 1
  1. Олег Ро

    А что делать если после смены протокола сайта на https в настройках WP перестала открываться только страница входа в админ.панель WordPress’a?
    Пишет «Страница недоступна. Сайт mysite.ru выполнил переадресацию слишком много раз.»

    Сам же сайт и его страницы с заметками открываются нормально по hттps://mysite.ru и по hттp://mysite.ru.
    И сайт загружается по защищённому протоколу SSL (есть замочек).

Задать вопрос