Перенос сайта WordPress с http на https - Как я перенес свой блог на https
1

Перенос сайта WordPress с http на https - Как я перенес свой блог на https

Доброго времени суток, дорогие друзья. Когда я создавал блог, я не особо задумывался над приобретением какого-то SSL сертификата для него, но появилась возможность взять бесплатный от Let's encrypt, и на свой страх и риск я взял его. Прошло время и наступил момент рассказать вам как все прошло и насколько это удачно было, да и есть... Давайте, перейдем скорее к делу.

 

Как я сказал, сертификат я взял от Let's encrypt, он бесплатный на 3 месяца, потом я его обновлю. Взял его в панели моего хостинг провайдера - hoster.ru. Выпущен он был 11.06.2017 и примерно через 1-2 дня я начал перенос своего блога на https (вместо стандартного http). Никакие особые цели я не преследовал этим, всё произошло достаточно спонтанно и быстро. 

 

Как происходил перенос сайта WordPress с http на https:

  • Первое и самое главное было направить домен на новый IP в настройках DNS, то есть подключить сам сертификат к домену. Сделал я это просто изменением одной записи A у моего домена culabra.ru. (При выпуске сертификата хостинг провайдер позволял мне скачать сертификат, если сайт расположен где-то еще, либо предоставлялся IP на который нужно направить домен, если хостинг используется их же - это я и сделал).
  • Далее необходимо было подключить сам движок WordPress к протоколу https. Вот тут у меня и начались появляться палки в колесах. Разберем давайте этот пункт более детально ниже.

 

Пойдем по порядку, что я конкретно делал:

Изменил адрес сайта в админ панели WordPress - Настройки - Общие. Поля Адрес WordPress (URL) и Адрес сайта (URL), после этого у меня поехал сайт полностью и отказался работать вообще, по любому из протоколов, выдавало циклическую ошибку. Как решилось это:

В корне сайта WP, в файле wp-config.php прописал:

define('FORCE_SSL_ADMIN', true);
define('FORCE_SSL_LOGIN', true);
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)
       $_SERVER['HTTPS']='on';
 
define('WP_HOME', 'https://culabra.ru');
define('WP_SITEURL', 'https://culabra.ru');
define('WP_CONTENT_URL', 'https://culabra.ru/wp-content');

Теперь открываем файл .htaccess и в любое месте, к примеру в самое начало вставляем:

SetEnvIf X-HTTPS 1 HTTPS=1

Этим мы даем понять серверу, что используем теперь https и открывать всё он должен именно по этому протоколу.

 

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

Конечно можно было пойти другим путем и просто поставить плагин, как большинство и делают, НО я не сторонник большого количества плагинов, а потому решил внести правки ручками... Для лентяев или тех кто все же решит поставить плагин, то найти его вы можете на сайте WP: WordPress HTTPS (SSL).

 

И так после этого как я сказал можно было зайти на сайт по адресу https://culabra.ru, но сертификат все еще не работал как надо (замочек был открыт). Это говорило о том, что на сайте используются где-то адреса с протоколом http, а не https. И верно, во всех постах картинки и к примеру ссылки на какие-то записи с моего блога имели адреса с http, а не с https или же // (относительный адрес //culabra.ru).

Для изменения конечно же придется редактировать либо каждую запись, а это не совсем удобно и разумно, ведь их может быть не 10, а 1000 или даже 100000...

 

Для изменения можно выполнить следующие SQL запрос в phpmyadmin:

UPDATE wp_posts SET post_content = REPLACE (post_content, 'http://culabra.ru', 'https://culabra.ru');

Или же можно сделать адреса сразу относительными, это даст определенную гибкость в дальнейшем, к примеру если вы захотите вернуться на стандартный http протокол:

UPDATE wp_posts SET post_content = REPLACE (post_content, 'http://culabra.ru/', '/');

Не забудьте изменить префикс "wp_" на тот, который вы используете, а также адрес culabra.ru на свой адрес сайта.

 

Сделать это можно также с помощью плагина: Better Search Replace. Он позволит сделать вам тоже самое, но во всех таблицах разом и без особых заморочек, лично я им и воспользовался.

 

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

 

Делаем 301 редирект с http на https на веб-сервере Apache:

Открываем файл .htaccess и в начале, либо в конце вставляем следующее:

Вариант, который помог мне:

RewriteEngine On
RewriteCond %{HTTP:Front-End-Https} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

Вариант, который мне не подошел, но он тоже является рабочим:

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

Можете поиграться, попробовать оба варианта, может какой-то вам подойдет, если нет, пишите в комментарии другие постараюсь накинуть. Либо напишите тех. поддержке вашего хостинга и пусть они подскажут вам, как сделать 301 редирект с http на https.

 

  • Идем дальше, теперь когда сайт работает и всё хорошо открывается по https, необходимо в robots.txt заменить также адреса на новые (host и sitemap).
  • Вам также потребуется пересоздать/обновить карту сайта, если таковая у вас используется. Так как там были старые адреса сайта, а у вас новые с https.
  • После уже можно оповещать поисковые системы о смене адреса. 

 

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

добавить адреса сайта в google webmaster

Также у адреса, который вы использовали изначально нужно "изменить адрес", в настройках сайта это делается, в той же панели вебмастера. Также на новые домены нужно добавить карту сайта, указать её самому (ждать пока робот найдет её и просмотрит, займет больше времени нежели самому всё сделать). С гуглом мы разобрались...

 

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

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

На скрине у меня уже произошла склейка этих адресов... Так что у вас будет просто 2 разных сайта как будто.

Далее вы должны в настройках старого адреса сайта в Яндекс Вебмастере в разделе "Индексирование" - "Переезд сайта" отметить галочкой "Добавить https". Не забудьте также как и с гуглом указать новую карту сайта, у нового адреса. После остается ждать только, когда поисковики удалят старые страницы и добавить новые, а точнее просто заменят адрес сайта на нужный нам (с https).

 

 

Итоги переезда сайта на https:

Спустя 2 недели начали выпадать страницы из поиска яндекса (за гуглом я особо не следил, да и не слежу), но буквально в течении 1-2 дней начали появляться страницы с новым адресом. И уже через месяц примерно, может полтора, все страницы в яше уже были с новым адресом, в вебмастере также как мы видим по скрину выше произошла склейка этих адресов. Также после начала переезда ТИЦ блога стал равен 0, а был ранее равен 10. Как мне сказали в поддержке яндекса ТИЦ восстановится позднее.

Прошло еще время, и 17.08.2017 - ТИЦ восстановился и даже стал больше, он стал равен 20. Это даже лучше, чем было раньше.

 

При этом хочу заметить, никаких падений позиций и проседания трафика не было. Сайт работает с той же скоростью имея SSL сертификат.

 

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

 

Статья про получение бесплатного SSL сертификата будет чуть позднее, на неделе я бы даже сказал.

Всем спасибо за внимание. Всем удачи!

Запись опубликована В категории: WordPress

Shnapik

Вебмастер с опытом ищет приют! Возьмите меня, а то меня рвут!

Один комментарий

  1. Как то переносил свой сайт на https, написал пошаговую статейку, статья по переносу http на hhtps.

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

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