Как перейти на https — полное и понятное руководство для WordPress

как переехать http-httpsПривет!

Это полная пошаговая инструкция. Возможно излишне подробная... если вы не новичок.

Но меня достали заумные «ну это и так понятно» многих авторов подобных статей.

Так что буду рассказывать и показывать так, чтобы на самом деле было понятно. Любому.

И не было по ходу проблем.

Замечу, что не претендую на всеобширность и охват всех возможных ситуаций. Распишу подробно ЧТО и КАК делал я при переходе на https.

Поехали

Установка SSL сертификата

Я выбрал вариант с бесплатным SSL сертификатом от некоммерческой организации Let's Encrypt. Сертификаты Let’s Encrypt распознаются как подтвержденные во всех основных браузерах. Единственная проблема с этими сертификатами состоит в том, что их нужно продлять каждые три месяца. Но:

  1. мой хостинг Beget.com  делает это автоматически. Поэтому мне больше ничего не нужно будет делать.
  2. Для заказа Let's Encrypt сертификата не требуется выделенный IP-адрес.
  3. Не нужно никаких хитрых и сложных действий по установке сертификата на хостинг. Всё уже интегрировано и упрощено настолько, насколько это вообще возможно.

Порядок действий по установке бесплатного SSL сертификата на Beget:

Зайти в раздел «Домены»

Установка SSL шаг 1и выбрать напротив домена «Управление SSL сертификатами»

Установка SSL шаг 2
В открывшемся окне перейти на вкладку «Бесплатный сертификат» и нажать «Установить»

Установка SSL на хостинге шаг 3После отправки заказа SSL-сертификата вы получите на контактный email письмо о подаче заявки на выпуск SSL, а затем еще одно письмо о завершении его установки.

В момент установки для домена будет автоматически изменена A-запись, если домен работает на DNS от Beget.ru.

Если вы используете DNS не бегета, то необходимо самостоятельно прописать на них (DNS) указанный в письме IP-адрес в качестве А-записи для домена.

Как узнать, чей DNS ?  Спросите у техподдержки бегета. Если регистратор не Бегет, то посмотрите в интерфейсе регистратора.

Определение принадлежности DNSЕсли там в названии DNS-сервера присутствует beget, то DNS у вас бегетовский и А-запись будет прописана автоматически.

DNS записи обычно обновляются в течение 10-15 минут.

Как только вы установите таким образом сертификат SSL, ваш сайт будет открываться как по http, так и по https. Чтобы сайт открывался чисто по https, вам нужно будет настроить переадресацию.

И 1 предупреждение. Ждите, пока хостер не пришлет сообщение, что всё, сертификат SSL подключен. Иначе, если поторопитесь, и не дожидаясь сообщения станете менять адреса на сайте в меню Настройки-Общее (как указано в этой статье ниже), то увидите вот это
bt1.ru блокировка входа в админку из-за ранней смены на https в Общее
Это тоже, конечно, не катастрофа. Подождите, пока не придет письмо с Бегета, что сертификат установлен и обновите страницу по F5.

Бэкап сайта

Во время перехода на https теоретически могут быть разные казусы и сложности. Поэтому сделать бэкап сайта нужно обязательно!

Бэкапим базу данных и файлы сайта. Лучше делать это через панель хостинга.

В крайнем (в крайнем!) случае, даже если вы забыли забэкапиться, а проблема взяла и случилась — хостинг Beget хранит 12 копий вашего сайта за двухнедельный период. Всегда можете сделать восстановление через сохраненную в админке копию. Но все-таки лучше не забывать бекапиться непосредственно перед тем как перейти на https. Ведь хостинг делает сохраненки не каждый день, а примерно через день. Так что может оказаться, что всё, что вы наработали за последние 2 дня — пропадет.

Настраиваем редиректы на сайте WordPress

Шаг 1: Замена адресов на https

Заходим в вертикальное меню блога Настройки > Общие и меняем в этих двух полях в адресе сайта протокол http на https:
Настройка перехода на https на WordPressНе забываем нажать на кнопку Сохранить изменения

Вас тут же «выкинет» из админки и вы увидите это
Окно входа в админку WordPressНе пугаемся. Это нормально. Входите заново с теми же логином и паролем. И спокойно продолжайте настройку.

Шаг 2: Правим wp-config.php

В файл wp-config.php (находится в корневой папке блога) перед строками

/** Инициализирует переменные WordPress и подключает файлы. */
require_once(ABSPATH . 'wp-settings.php');

вставляем код

/** 2018-11-07 код для перехода на https **/
define('WP_HOME', 'https://sidorevich.ru');
define('WP_SITEURL', 'https://sidorevich.ru');
define('FORCE_SSL_ADMIN', true);
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)
$_SERVER['HTTPS']='on';
/** /конец кода для перехода на https **/

Вместо sidorevich.ru вбиваете свой сайт, конечно :-)

Шаг 3: Правим файл .htaccess

Если веб-сервер вашего хостера — Apache, то в файл .htaccess (лежит в корневом каталоге блога) под строку

RewriteEngine On

вставьте код

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

Если же сервер Nginx, то вставляйте код

server {
listen 80 default_server;
listen [::]:80 default_server;
server_name example.com www.example.com;
return 301 https://$server_name$request_uri;
}

Какой сервер — уточните в техподдержке вашего хостера. На Бегете — Apache.
Или просто спросите в техподдержке, какой код ставить в .htaccess.

После этого проверьте результат — введите в адресную строку браузера URL вашего сайта с http://  Если всё работает правильно, то вас должно перекинуть на https://ваш_сайт.

Шаг 4: Меняем ссылки на изображения

Всё. Теперь ваш сайт открывается на https, но это ещё не победа

Замена http на https в изображениях на сайтеСсылки-то в изображениях указаны как http —

Замена ссылок в путях к изображениям в WordPress на httpsА изображений на вашем сайте десятки или сотни. Менять во всех руками — нереально.

Плюс на сайте у вас могут быть внутренние ссылки с http. Всё это тоже нужно будет менять.

Что нельзя делать или ошибки тех кто не знает как перейти на https правильно, но смело пишут на эту тему статьи

1. Не лезьте в базу данных напрямую с SQL-запросами, как часто советуют. Там сериализированные массивы, длины строк которых менять напрямую рисковано. Механизм объяснять не буду, но результат может быть такой, что сайт придется заново переустанавливать.

2. Не применяйте плагины которые переводят абсолютные ссылки в относительные. Удивительно, но даже порой техподдержка хостинга советует применять такие плагины. Хотя чего удивительного, там тоже люди работают. Так вот, не знаю как для других CMS, но в WordPress это делать очень нежелательно. Вот что об этом написано в официальном документе WordPress

WordPress stores absolute URLs in the database. Relative URLs are not used for a variety of reasons. Dynamically generated websites need permanent URLs (permalinks), so absolute URIs make more sense. Ну и далее целая «портянка» причин, озаглавленная Why relative URLs are not good #

3. При работе с плагином Better Search Replace не пытайтесь заменять выражение src="http:// на src="https:// как советуют в некоторых статьях. Я попробовал и выяснилось, что если некоторые изображения на вашем блоге сохранены в кириллических названиях (т.е. названы по русски), то с этими изображениями замены не произойдет. Какое выражение нужно ставить, чтобы всё было ОК, я покажу далее.

4. Не делайте массовую замену в других таблицах базы кроме wp_posts. Пишут, что дескать нужно еще в wp_options замену делать. Не нужно! Я пробовал. Слетели настройки темы. Далее я покажу как сделать правильно.

Вобщем, правильным будет делать замены с помощью плагина Better Search Replace.

Устанавливайте его.

После установки в меню Инструменты появится строка Better Search Replace

Кликайте и увидите окно

Настройка Better Search Replace для перехода на https

Теперь вбейте в эту форму такие данные

Настройка Better Search Replace для перехода на httpsТочно так. Только вместо sidorevich.ru ваш сайт.

В Выбор таблиц выделяете только wp_posts.

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

В «Холостой запуск (без замены)» галочку не снимайте. Это будет тестовый запуск. Галочку оставьте и нажмите Запустить Поиск.

Что делать, если появилось сообщение Ошибка обработки вашего запроса

Настройка Better Search Replace для перехода на https

  1. Если у вас установлен плагин WordPress Firewall 2 — он блокирует. Деактивируйте его на время. Не забудьте потом снова активировать.
  2. Если не помогло — деактивируйте все плагины. Какой-то из них блокирует. Не забудьте потом снова активировать.
  3. Если не помогло — перейдите на вкладку Настройки и уменьшите Максимальный размер страницы вдвое
    Настройка Better Search Replace для перехода на https
  4. 4. Если не помогло — ещё раз уменьшите вдвое.
  5. Если не помогло - Увеличьте предел памяти в файле wp-config.php, как показано здесь
    Этот 5й пункт самый гиморный, но мне помог пункт 1 и будем надеяться, что и у вас дальше него не пойдет.

Если же всё ОК и плагин пишет, что проверил 1 таблицу, нашел столько-то ячеек и ни в одной замены не сделал, то так и должно быть.

Вот тогда снимайте галочку с пункта Холостой запуск и снова жмите на Запустить Поиск/Замену.

После этого проверьте — появился ли на сайте значок замочка или там «i» в кружочке.

Если замочек появился и при нажатии на него видите, что всё ОК

Настройка перехода на https на WordPress

то значит вы победили.

Если по прежнему "i" в кружочке, то нужно найти, где ещё остались изображения с http

Поиск оставшихся изображений с https

В браузере Chrome откройте главную страницу сайта, который переводите на https и нажмите комбинацию клавиш Ctrl+Shift+J

Откроется консоль ошибок

Поиск ошибок при переходе на https на WordPress

Нас интересует именно Mixed Content.

Посмотрите, какие там указаны файлы и найдите их на сайте. Сделайте замену.

В данном случае, мы видим файл http://sidorevich.ru/wp-content/uploads/2018/10/MyPhoto_site_norm.jpg . Можно просто кликнуть по ссылке и посмотреть, ЧТО это за изображение. И либо сразу сообразите, где оно у вас применено, либо в меню Медиафайлы откроете это изображение, найдя его по дате (например, здесь это было 2018 октябрь) и там увидите, где оно на сайте. Если с ходу не видно, то скорее всего вы применили его в виджетах. Идите в меню Внешний вид — Виджеты и смотрите, в каком виджете стоит ссылка на это изображение. У меня это был виджет Об авторе.

Виджет Об авторе

Зашел в виджет. Поправил http на https и после этого проверил результат.

Настройка перехода на https на WordPress

Всё. Переход совершили. Чтобы добиться этого, я день просидел. В итоге даже пришлось переустанавливать блог. Всё из-за моего доверия к авторам в интернете. А вот когда переустановил блог и как бы заново озадачившись вопросом — как перейти на https — сделал переход вот прямо по пунктам этой статьи, то на всё про всё понадобилось примерно 3 минуты (!)

Переподключаем видео путем замены http на https

Видео у вас отключатся. В постах будут «дыры». Пустые места вместо видео.

Не проблема. В том же плагине Better Search Replace так же, как и было описано выше, вбиваем замену с

src="http://www.youtube.com на src="https://www.youtube.com

и заменяем только в таблице wp_posts

А если у вас в блоге есть видео с Vimeo, то еще заменяем

src="http://player.vimeo.com на src="https://player.vimeo.com

Тоже только в wp_posts.

Можно, конечно, сразу было сделать такую замену

src="http:// на src="https://

Всё таки в iframe видео русских букв точно нет и всё должно пройти гладко. Но я осторожничаю. Вы — как хотите.

Уведомляем Яндекс о переходе на https

Не забываем про поисковики, а то они забудут про вас.

Заходите в свой веб-мастер Яндекс.

Далее нужно перейти в раздел Индексирование – Переезд сайта. И выставляем чекбокс (галочку) напротив «Добавить HTTPS», после этого нажимаем «Сохранить».Яндекс переход на https

Некоторые пишут, что это нужно делать сразу после установки SSL сертификата и потом нужно ничего не делать, пока Яндекс не проиндексирует. Пару недель, мол, подождите...

Это ерунда. Сам Яндекс отвечает на вопрос  Стоит ли ждать, пока сайт HTTPS проиндексируется перед тем, как начинать переезд? так —

Нет, переезд можно начинать в любой момент.

Ещё некоторые пишут, что нужно в файле robots.txt прописать директиву Host. Это тоже устарело. Не нужно это делать. Яндекс упразднил эту директиву.

Правим карту сайта

Делаем две вещи:

1. Проверяем, чтобы в карте сайта .xml присутствовал только протокол https.

У меня карту сайта строит плагин Google XML Sitemaps поэтому, все прошло чисто. Плагин заменил все http ссылки в карте на https. Не забудьте проверить свою карту сайта.

Введите в адресную строку браузера https://ваш_сайт/sitemap.xml и посмотрите.

2. После этого откройте в notepad++ файл robots.txt и в адресе карты сайта замените http на https

Настройка карты сайта WordPress в файле robots

Оповещаем Google о переходе на https

Search Console

Гугл вообще загадочная штука со странной логикой. Поэтому всё зафиксировал в картинках с пояснениями. А чтобы не растягивать страницу, поместил все в «аккордеон».

Сначала перейдите на страницу https://www.google.com/webmasters/tools/home и далее смотрите

Шаг 1

Оповещение о https Search Console Google

Выберите нужный сайт



Шаг 2
Оповещение о https Search Console Google

Шаг 3
Оповещение о https Search Console Google

Шаг 4
Оповещение о https Search Console Google

Шаг 5
Оповещение о https Search Console Google

Шаг 6
Оповещение о https Search Console Google

Загрузить новую карту сайта

Кликаем тут

Загрузка новой карты сайта при переезде на https Search Console Google

 

и вбиваем название своей карты, то есть sitemap.xml . Жмем на «Отправить».

Google Analitics

Шаг 1

Перейдите на страницу http://analytics.google.com/

Внесение изменений в Google Аналитика при переходе на https

Шаг 2

Внесение изменений в Google Аналитика при переходе на https

Изменения нужно будет сделать в Настройках ресурса и в Настройках представления



Шаг 3

Внесение изменений в Google Аналитика при переходе на https

Не забывайте нажать на кнопку Сохранить внизу этой страницы



Шаг 4

Внесение изменений в Google Аналитика при переходе на https

Аналогично — не забываем нажать на Сохранить внизу страницы



Заключение

  1. Действуете точно по этой инструкции
  2. Если после замены ссылок в изображениях и видео замочек не появляется — первым делом перепроверьте ЧТО в виджетах.
  3. Шаблон от шаблона, сайт от сайта отличаются, но если внимательно ознакомитесь с текстом этой статьи, то справитесь со всеми неожиданностями и проблем с тем, как перейти на https у вас не будет.
  4. Я пользуюсь платными шаблонами от GoodvinPress. Это современные темы с чистым кодом. Поэтому проблем при переходе на https минимум. Если у вас тема с наличием абсолютных ссылок в .css , то придется ещё руками поискать http прямо в style.css и поправить на https.

P.S. Хотите получать уведомления о новых статьях этого блога? Нажмите на эту кнопку -

Хочу сразу узнавать о новых публикациях!

Предыдущая запись Mailerlite Лишние запятые в теме сообщения. Решено
Следующая запись Лучшая bluetooth гарнитура
Обсуждение: 14 комментариев
  1. Янис:

    Скажите пжл, Вы ранее не ответили — зачем вставлять код в файл wp-config.php и можно ли его удалить после перехода на https? У нас же есть редирект в htacess, а этот код для чего?

    Ответить
    1. Dmitriy Sidorevich:

      Пробовал убирать — переадресация перестает работать.

      Ответить
  2. Янис:

    Скажите пжл, зачем вставлять код в файл wp-config.php и можно ли его удалить после перехода на https? У нас же есть редирект в htacess, а этот код для чего?

    Ответить
  3. Сергей:

    Добрый день. А что делать с внешними ссылками на другие сайты по HTTP протоколу, который стоят в статьях? 

    Ответить
    1. Dmitriy Sidorevich:

      Ничего. Либо они уже на 301 редиректе, либо будут давать 404. Если 404, то убейте или замените ссылку.

      Ответить
  4. Янис:

    Да, и можно ли после всех замен этот плагин Better Search Replace удалить?

    Ответить
    1. Dmitriy Sidorevich:

      Конечно

      Ответить
  5. Янис:

    Огромное спасибо за адекватную статью! Сам люблю четкость и ясность мысли и у вас это реально понятный мануал, не то что по интернету чушь собачья по кускам выдранная из других статей. Вот собираюсь тоже переезжать. Скажите, достаточно лишь wp_posts в плагине на замену https указать? Вижу там wp_comments (у меня в комментах стоят ссылки на сайты авторов), также wp_subscribe reloaded (и этот плагин у меня стоит об оповещениях в комментах), смело ли можно эти и другие таблицы на замену https пробовать?

    Ответить
    1. Dmitriy Sidorevich:

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

      Ответить
  6. Александр:

    Спасибо, за статью все получилось, правда один сайт не хотел в яндекс добавляться но разобрался что дело было в плагине кеша, отчистил кеш и сайт добавился в переезд. Яндекс говорит что надо вставить метатег <meta name="referrer" content="origin"/> у вас в статье этого нет, стоит его добавлять или нет?

    Ответить
    1. Dmitriy Sidorevich:

      Не вставлял и не видел такого. Киньте ссылку.

      Что касается плагинов кэша, то это адский ад. Я их отключаю, когда хоть что-то начинаю делать с сайтом. Если не вспомнишь, что дело может быть в нем, то весь мозг вынесет.

      Ответить
      1. Александр:

        Вот здесь в шаге 2

        yandex.ru/support/webmast...ror-is-not-https

        Ответить
        1. Александр:

          Кстати у кого VDS и установлен ISPmanager то настроить редирект можно просто поставив "галочку" в настройках домена не внося изменения в файлы .htaccess и  wp-config.php

          Ответить
  7. Николай:

    Спасибо за подробную инструкцию! Сделал по написанному и перевел пока малопосещаемый сайт без проблем. Буду смотреть, как отразится на трафике. Если все нормально, тогда возьмусь за более крупные проекты.

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

    Плохо, что вашего сайта нет в топе гугла, всякая дрянь в выдаче. Даже сайты на http рассказывают, как они переходили на https (смешно). Умею гуглить, ваш сайт нашел через инструменты: показать за год. Удачи!

    Ответить

Ваш комментарий

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

Чтобы отправить комментарий, разрешите сбор ваших персональных данных .
Пользовательское соглашение