Как правильно перенести свой сайт на WordPress на безопасный протокол HTTPS?
С каждый годом поисковые гиганты диктуют нам все новые и новые правила, которые мы можем соблюдать, чтобы позиции нашего сайта не ухудшились, или ничего не предпринимать, и, как говорится, – будь что будет.
В последнее время в моду вошла безопасность, а именно – защищенный протокол HTTPS.
Именно поэтому сегодня я покажу свой на 100% рабочий способ переноса вашего сайта на этот протокол.
Вообще существуют несколько типов SSL-сертификатов, бесплатные и платные. Если у вас серьезная организация, которая ведет коммерческую деятельность в Интернете – вам определенно нужно ставить платный сертификат (цена такого сертификата варьируется в районе от 1 000 до 100 000 рублей), так как он подтверждает ваши ИП или другие данные.
Если же у вас небольшой форум или сайт по типу нашего – вам вполне хватит и бесплатного сертификата. Самый популярный из таких – Let’s Encrypt.
Он сейчас есть почти на всех популярных хостингах, так что подключить его к вашему сайту не составит труда.
Я же расскажу, что нужно сделать после того, как вы подключили тот или иной сертификат к своему сайту.
Итак, начнем.
1. Для начала вам необходимо зайти в панель управления сайтом, раздел «Настройки», пункт «Общие»:

Здесь вам необходимо в графы «Адрес WordPress (URL)» и «Адрес сайта (URL)» записать адрес вашего сайта с HTTPS-протоколом.
По завершении в конце страницы жмете «Сохранить изменения».
2. Затем делаем два SQL-запроса к вашей базе данных. Подробнее об этом написано здесь.
Первый запрос – это:
UPDATE wp_posts SET post_content = REPLACE (post_content, "http://your_site.ru', "https://your_site.ru');
С помощью него мы меняем адреса у всех изображений в ваших записях. И второй:
UPDATE wp_usermeta SET meta_value = REPLACE (meta_value, "http://your_site.ru', "https://your_site.ru');
С помощью него мы меняем адреса у аватаров пользователей.
3. Далее настраиваем файл robots.txt, который лежит в корне вашего сайта. Здесь вы правите директиву «Host». И если раньше у вас было что-то вроде:
Host: your_site.ru
Вы всю строку меняете на:
Host: https://your_site.ru
Не забывайте «your_site.ru» изменить на доменное имя вашего сайта. Здесь же вы проставляете корректные ссылки до карты сайта (sitemap). И если раньше у вас было:
Sitemap: http://your_site.ru/sitemap.xml.gz
Sitemap: http://your_site.ru/sitemap.xml
То теперь у вас должно быть:
Sitemap: https://your_site.ru/sitemap.xml.gz
Sitemap: https://your_site.ru/sitemap.xml
Отлично, сохраняем файл robots.txt и отправляем его обратно на сайт.
4. После этого вам необходимо настроить 301 редирект с HTTP на HTTPS. В WordPress это делается несколькими способами.
Первый способ – это через файл .htaccess, который находится в корне вашего сайта. Открываете его и вставляете либо этот код:
RewriteCond %{HTTPS} =off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]
А если он не работает, то этот:
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]
Либо этот:
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Все коды пишутся сразу после «RewriteEngine On».
Второй способ – это через файл функции. Открываете файл functions.php, который находится в папке /wp-content/themes/ваша_тема/, и в самый низ вставляете:
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();
}
}
add_action("init", "redirect_http_to_https");
Сохраняете изменения в обоих случаях и отправляете файлы обратно на сайт.
5. И завершающим, весьма кропотливым пунктом, будет следующее. Вы открываете папку вашей темы сайта в FTP (а еще лучше – выгружаете ее к себе на компьютер) и везде, где есть ссылки на файлы (изображения, скрипты и прочее) без https, вы прописываете с https.
Да, дело не быстрое – но мы же не ерундой с вами занимаемся, так что запаситесь терпением.
Все изменения нужно проделать как в PHP-, так и в CSS-файлах.
После того, как вы проделаете все шаги – очистите кэш на сайте (если, конечно, на вашем сайте установлен какой-либо плагин кэша), затем чистите кэш браузера.
Если вы все сделали правильно, то, посетив свой сайт в адресной строке, вы обнаружите примерно такой зеленый замок:

Это говорит о том, что вы успешно перенесли ваш сайт на защищенный HTTPS-протокол. Если у вас нет замка, замок имеет восклицательный знак или сайт после всех правок вовсе не открывается – пишите об этом в комментариях, я постараюсь вам помочь.