WordPress: как безопасно перейти с http на https?

· WordPress и Блог · 2 мин чтения

В этой записи я хочу затронуть наболевшую тему для владельцев сайтов за последнее время. Google и Яндекс стали принуждать к использованию HTTPS соединения. Возможно вы уже знаете, что если ваш сайт был на HTTP, то перейти на HTTPs не так просто, так как многие ссылки в WordPress записываются в базу и тем самым нужно писать специальные SQL запросы, чтобы их исправить. Здесь и сейчас я распишу безопасный план для миграции вашего сайта на безопасное соединение.

Я не буду описывать как установить SSL сертификат в этой записи, так как информации по этому теме достаточно и многие хостинги абсолютно бесплатно предоставляю такую услугу в один клик. Я лишь опишу процесс перехода с http на https после того как сайт какое-то время просуществовал на http и далее решил перейти на безопасное соединение.

Основные мысли

В роли примера, я буду использовать bologer.ru — мой личный домен, где вы сейчас читаете эту запись. У вас же, конечно, будет собственный домен, который вы самостоятельно замените.

База данных

В базе данных нужно будет все упоминания http://bologer.ru на https://bologer.ru. Это нужно сделать во всех таблицах, где есть такое упоминание.

Для начала вам нужно зайти в phpMyAdmin, открыть базу сайта и нажать на вкладку «Поиск», ввести в поиск http://bologer.ru (в вашем случае это будет ваш домен) и в конце «ОК» , чтобы запустить поиск.

Далее вы должны увидеть список таблиц где были найдены совпадения. Теперь запишите названия всех таблиц с совпадениями и ниже я покажу SQL запрос, который поможет исправить их.

На примере SQL ниже, я заменяю все упоминания http://bologer.ru на HTTPs версию, в таблице wp_posts внутри колонки post_content.

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

В дополнении, у вас могла быть записана www версия вашего домена, на подобии http://www.bologer.ru, если вы хотите исправить и это, просто повторите запрос выше в следующем формате:

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

Теперь все что вам нужно сделать — это повторить SQL запросы выше для всех таблиц где есть упоминание домена.

Изменения в .htaccess

В .htaccess файле, вам нужно будет сделать ещё пару изменений. Этот файл находится в корне вашего WordPress, где лежат папки wp-content и др.

.htaccess:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

К стандартному .htaсcess, было добавлено две строки:

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

Которые делают редирект c HTTP на HTTPs, если пользователь по какой-либо причине заходит на старую версию сайта.