Переход на https
Переход сайта на HTTPS.
Для перехода сайта с HTTP на HTTPS нам потребуется несколько этапов.
1. Получение SSL сертификата
Первое, что необходимо сделать – приобрести SSL сертификат (платный или бесплатный) и подключить его к домену. Это можно сделать самостоятельно в панели управления хостингом (ISPmanager, CPanel, VestaCP) или обратиться за помощью в техподдержку. Некоторые хостеры предлагают подключить бесплатный SSL с автоматическим продлением в один клик.
Но сегодня я не стану затрагивать вопросы, связанные с выбором и установкой SSL сертификата – это отдельная тема. Сейчас у меня подключены сертификаты Let’s Encrypt. До этого использовал StartSSL, но после шумихи с бесплатными SSL-сертификатами StartCom и WoSign последовала закономерная блокировка этих удостоверяющих центров в популярных браузерах.
2. Внесение изменений в robots.txt
Давайте перейдем к файлу robots.txt и изменим директиву Host, указывающую на главное зеркало:
1 |
Host: https://computest.ru |
Если директива Host не использовалась раньше, тогда добавьте ее в любом месте, т.к. она является межсекционной. Согласно справке Яндекса, если сайт работает по защищенному каналу связи, то обязательно указывать протокол.
3. Переезд сайта с http на https в сервисе Яндекс Вебмастер
Теперь необходимо зайти в Яндекс Вебмастер и в разделе Индексирование перейти на страницу Переезд сайта. Отметьте флажком Добавить HTTPS и сохраните изменения.
Появится информационное сообщение о том, что Яндекс не гарантирует сохранение количества страниц сайта в поиске, его позиций или посещаемости в случае изменения главного зеркала:
Заявка от 10.08.2017 на переезд сайта с домена computest.ru на https://computest.ru обрабатывается (это может занять некоторое время).
Также стоит добавить новый сайт с HTTPS протоколом, после склейки они будут объединены в группу зеркал.
4. Замена внутренних ссылок на HTTPS, решение проблемы
Дальнейшее действие подразумевает замену всех абсолютных путей к стилям, скриптам, изображениям, а также замену всех внутренних ссылок по протоколу HTTP на относительные или простую замену протокола Я предпочел сменить протокол путей и ссылок на HTTPS и ниже поделюсь с Вами как это можно быстро сделать с помощью SQL-запросов к базе данных.
При сохранении записи в таблицу wp_posts в поле guid
записывается глобальный уникальный идентификатор (Globally Unique Identifier). Давайте изменим это поле для смены протокола, выполнив следующий запрос к БД через phpMyAdmin:
UPDATE wp_posts SET guid = REPLACE(guid, 'http://computest.ru','https://computest.ru');
Произведем замену протокола всех ссылок в контенте, то есть выполним запрос к полю post_content
в таблице wp_posts нашей базы данных:
UPDATE wp_posts SET post_content = REPLACE(post_content, ‘http://computest.ru’, ‘https://computest.ru’);
Не забываем про замену протокола ссылок и в комментариях. Для этого внесем изменения в поле comment_content
таблицы wp_comments следующим образом:
UPDATE wp_comments SET comment_content = REPLACE(comment_content, ‘http://computest.ru’, ‘https://computest.ru’);
На что следует обратить внимание при выполнении этих SQL-запросов:
- обязательно замените адрес сайта на свой,
- измените префикс таблиц, если он отличается от стандартного
wp_
.
SQL-запросами мы внесли львиную долю изменений, но есть места, где все же придется заменить поработать вручную — это могут быть файлы темы и виджеты, где используются внутренние ссылки с HTTP протоколом. Также стоит обратить внимание на загрузку внешних стилей, скриптов, фреймов и картинок — все они должны загружаться по HTTPS, иначе они не будут загружены, а в консоли появятся ошибки смешанного содержимого (Mixed Content).
5. Ожидание склейки зеркал в Яндексе
Ждем письма от Яндекс Вебмастера (или уведомления, если не настроена рассылка) о смене главного зеркала. До тех пор, пока это уведомление не поступит, ни в коем случае нельзя ставить редирект! В противном случае все страницы сайта будут исключены из индекса поисковой системы Яндекс, склейка займет значительно больше времени из-за отсутствия доступа к robots.txt для HTTP версии сайта.
Но есть исключение из этого правила. Допустимо использовать редирект только в том случае, если исключить из общего правила файл robots.txt. Этого можно добиться, используя в .htaccess:
1 2 3 |
RewriteCond %{SERVER_PORT} !^443$ RewriteCond %{REQUEST_URI} !^/robots.txt RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] |
Все наши сайты переводили на безопасный протокол только дождавшись склейки через Host.
6. Настройка 301 редиректа с HTTP на HTTPS
Теперь, когда процесс склейки зеркал в Яндексе завершен, можно приступать к завершающему этапу. Заходим в консоль WordPress, в разделе Настройки — Общие меняем в полях Адрес WordPress и Адрес сайта протокол нашего сайта на HTTPS.
Открываем phpMyAdmin и выполняем следующий SQL-запрос к базе данных, с помощью которого делаем замену полей с опциями home
и siteurl
в таблице wp_options:
UPDATE wp_options SET option_value = REPLACE(option_value, 'http://computest.ru', 'https://computest.ru')
WHERE option_name = 'home' OR option_name = 'siteurl';
В файле .htaccess ставим постоянный редирект с HTTP на HTTPS:
1 2 |
RewriteCond %{SERVER_PORT} !^443$ RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] |
7. Настраиваем заголовок HTTP Strict Transport Security
Последний штрих — устанавливаем форсированное защищенное соединение через протокол HTTPS с помощью механизма HSTS (HTTP Strict Transport Security). Браузер будет принудительно загружать сайт по защищенному протоколу, для чего в .htaccess нужно добавить строку:
1 |
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" |
Подведение итогов
Подводя итог проделанной работе, ниже я подготовил сводную таблицу по своим сайтам. Ориентируясь на эти сведения можно сделать некоторые выводы о сроках склейки зеркал, переносе показателя тИЦ.
Несколько ссылкок, где можно проверить результаты своих и чужих трудов:
1. SPDY Check
2. SSL Labs — проверка качества защиты вашего сервера.