Вчера решил, что хватит это терпеть и пора перевести свой сайт с http на https (т.е. подключить SSL сертификат и настроить переадресацию). По случаю решил описать весь процесс, как я его делаю. Честно говоря преследую этим переводом сайта еще одну цель — когда меня в очередной раз попросят помочь переехать на https, я просто дам ссылку на подробное руководство.
- HTTP, HTTP/2, HTTPS, SSL — о чем речь?
- Переход с http на https — зачем мне это?
- Шаг 1: Покупка и установка SSL сертификата
- Шаг 2: Подготовка сайта к переезду на https
- Шаг 3: Оповещаем поисковые системы о переходе на https
- Шаг 4: Настройка 301-редиректа с http на https
- Шаг 5: Ожидание переиндексации сайта
- 13 популярных ошибок при переходе сайта на https
- Ответы на несколько вопросов
HTTP, HTTP/2, HTTPS, SSL — о чем речь?
Hypertext Transfer Protocol (HTTP) — это основном протокол связи, который используется на любом сайте для установки соединения.
HTTP/2 — более современный протокол, в котором добавлены увеличивающие производительность и безопасность.
HTTPS — расширение протокола HTTP, которое поддерживает шифрование.
Secure Sockets Layer (SSL) — криптографический протокол для безопасной связи.
Переход с http на https — зачем мне это?
Я бы выделил 4 причины:
- Забота о безопасности данных: сейчас по этой теме сходят все с ума (раньше все клали с пробором, но теперь…). Для сайтов работающих с деньгами и онлайн оплатой использование https протокола — острая необходимость, т.к. шифруются все данные (защита от утечки). Для простых информационных ресурсов не особо критично, но купить и установить SSL-сертификат и перейти на https не трудно и не долго.
- Это фактор ранжирования: и Яндекс и Google открыто об этом говорили. Если раньше только Гугл заставлял переводить сайты на https протокол, то сейчас за это взялось зеркало Рунета и с 24 января 2019 года в вебмастере уже многие увидели предупреждение:
Предупреждение в Яндекс Вебмастере об отсутствии https-протокола на сайте
Т.е. это благотворно скажется на ваших позициях и трафике с поисковых систем (на самом деле нет, чаще вообще никак не скажется 🙂 )
- Больше доверия со стороны пользователей. Когда посетитель видит в браузере метку:
Меня это не пугает и я все равно юзаю сервис 🙂
Это может его отпугнуть/насторожить, особенно если это человек не сильно понимающий сути происходящего.
- Ради HTTP/2 и большей скорости, которая так же является фактором ранжирования. В среднем прирост по скорости достигает 20-30% практически за 20-30 минут работы.
Ну а теперь перейдем к пошаговому плану по переходу с http на защищенный протокол https.
Шаг 1: Покупка и установка SSL сертификата
Прежде чем приобретать SSL нам нужно определиться с его типом и нашими потребностями, чтобы не переплачивать.
Типы ssl сертификатов и какой выбрать?
Все сертификаты выдаются для 1 домена (все они способны защищать и шифровать ваши данные):
- С проверкой домена (Domain Validation): отлично подойдет для блогов, сайтов-визиток, интернет-магазинов и любых сайтов, для которых важно само наличие SSL сертификата. Стоит дешево, выдается быстро., замок показывается в браузере.
- С проверкой компании (Organization Validation): вариант для тех, кому важно большее доверие, т.к. центр сертификации проверяет принадлежность компании к домену. Нужно крупным компаниям и магазинам. Делается за 3 дня.
- С расширенной проверкой (Extended Validation): максимальное доверие к компании, т.к. выдается только юридическим лицам и центр сертификации проверяет больше данных. Делается за 7-10 дней, стоит дорого, но вы получаете в браузере вывод вашей компании:
Если у вашего сайта много поддоменов и вы хотите их перевести на https — стоит обратить внимание на сертификаты с пометкой Wildcard (количество поддоменов неограниченно).
Активация SSL сертификата для домена
После того, как вы решили какой тип SSL сертификата вам нужен, купили его (свои я покупал на gogetssl.com, а для блога взял бесплатный Let’s Encrypt) и не забыли сохранить все ключи, которые вам были выданы — самое время привязать все к вашему домену. Всё делается у продавца сертификатов в панели управления.
После активации домена он должен пройти валидацию:
Все, теперь можно переходить к следующему шагу.
Бесплатный SSL сертификат от Let’s Encrypt
Let’s Ecnrypt — это некоммерческий центр сертификации. Вы можете без проблем взять их бесплатный SSL сертификат, если вам важно само наличие https протокола.
Яндекс и Google (а также браузеры) нормально относятся к нему, т.е. никаких трудностей у вас не будет.
У хостеров бесплатный сертификат подключается за 1 минуту
На многих хостингах можно буквально за минуту подключить бесплатный SSL сертификат прямо в вашей панели управления, ну или обратиться в службу поддержки.
Установка SSL на примере FastVPS
У вас есть ключи и все что вам нужно сделать — это добавить их в панели своего хостинга. Весь процесс установки SSL сертификата — это копирование нужных ключей в нужные поля (вставляем вместе с комментарием, если на хостинге или сервере не указано иное):
Просто вставить в поля свои ключи от центра сертификации
Очень надеюсь, что вы не потеряли ключи (которые выдавались после покупки сертифката SSL), т.к. их нельзя восстановить!
Шаг 2: Подготовка сайта к переезду на https
Многих сложностей в переносе может не быть вообще, если изначально за сайтом следили и делали все чисто и без костылей.
Бэкап
Любое вмешательство в жизнь сайта (если это не простые действия с контентом или вы не самоуверенный программист) начинается с бэкапа сайта, т.к. в случае появления проблем — вы быстро восстанавливаете данные и программист уходит все делать на своем сервере/хостинге.
Относительные ссылки
Когда на сайте абсолютные внутренние ссылки вида http://romanus.ru/page-name — это может быть проблемой, т.к. их нужно:
- Либо заменить на относительные ссылки вида /page-name;
- Либо в абсолютных ссылках заменить протокол на https.
Я бы выбирал 1 вариант, т.к. он более гибкий и пригодится не только в решении текущей задачи. Однако и там есть свои минусы, но это не тема данной статьи.
Уверен, на любом сайте вы найдете волшебную таблетку (пример замены домена с протоколом в статьях) для WordPress:
Пример замены домена через SQL-запрос: кто-то его проверял?
Почему люди везде это пишут — непонятно, видимо никто не проверял работоспособность т.к. этот вариант просто не работает. SQL запрос не может заменить домен в ячейке, содержащей целый текст, т.к. это просто замена в лоб (как в Excel). Т.е. вы не можете заменить ячейку, если она не равняется вашему тексту (читай, ячейка = текст и ничего более).
Но у нас же в ячейках текст статей в html формате.
Даю 2 рабочих вариант по массовой замене http на https на сайте:
- Для понимающих (хотя им не нужно объяснять). Идем в PhpMyAdmin, экспортируем нашу базу данных (или конкретную таблицу, в которой нужно сделать изменения). Далее открываем редактором типа Sublime или Notepad++ и через замену все меняем. Далее импортируем исправленный вариант обратно в нашу базу данных.
- Чтобы не накосячить. Во многих CMS есть плагины, которые с помощью регулярок могут делать замены (да и без них). Например, для WordPress есть хороший плагин Search Regex — который быстро и без проблем поможет сделать замену ссылок в тех местах, в которых это нужно.
Пример работы плагина Search Regex для WordPress
Все пути к файлам и изображениям также должны быть изменены.
Адрес сайта
В CMS нужно изменить адрес вашего сайта на корректный, в WordPress это делается так:
Замена домена в админке WordPress
Внешние скрипты
Все внешние скрипты должны подключаться строго через https, т.к. в противном случае у вас будет смешанный протокол.
Чтобы убедиться — смотрите страницы через режим исходного кода и проходитесь поиском или любой краулер аля Screaming Frog, Netpeak и т.д.
Robots.txt и Sitemap.xml
В robots.txt чаще всего не нужно никаких изменений вносить (раньше нужно было добавить директиву для Яндекса: host: https://romanus.ru — но теперь это уже не нужно), кроме замены пути для sitemap.xml.
В самой карте сайта нужно изменить все ссылки. Если она у вас формируется автоматически + все ссылки в базе данных вы изменили — чаще всего никаких доработок не понадобится. Но лучше перепроверить:
В sitemap.xml не должно быть ссылок на незащищенный протокол
P.S. Многие рекомендуют делать исключения в .htaccess, чтобы robots.txt открывался по 2 протоколам (по http и по https). Я не делаю этого — проблем не замечал, но держу вас в курсе.
Шаг 3: Оповещаем поисковые системы о переходе на https
После покупки и установки SSL-сертификата на подготовленный сайт мы можем оповестить о наших действиях поисковые системы Яндекс и Google в их кабинетах.
Переход в Яндекс.Вебмастер
- Добавляем версию с https в панель вебмастера;
- На старом зеркале с http заходим в переезд сайта и ставим галочку;
- Залить новую карту сайта;
- Не забыть поставить регион
Меняем зеркало в Яндекс Вебмастере
По сути в Яндексе переезд на https осуществляется 1 галочкой + перенести свежие данные.
Переход в Google Search Console
Самое страшное, что может произойти во время переезда сайта на https в Гугл — забыть перенести Disavow файл, потому краткий чек-лист:
- Добавить новое зеркало с https;
- Если у вас были отклонены ссылки через Disavow Links — нужно обязательно обновить данные;
- Добавить карту сайта;
Шаг 4: Настройка 301-редиректа с http на https
Здесь все сложно и просто одновременно. Подробная статья о 301 редиректах с примерами, рекомендую изучить.
Скорее всего вам подойдет один из вариантов:
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://site.ru/$1 [R=301,L]
или
RewriteCond %{ENV:HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [NC,R=301,L]
В коде не забываем заменить site.ru на ваш сайт, а вставлять это нужно в файл .htaccess (лежит в корне вашего сайта на хостинге).
Если варианты не подошли — дергаем программиста с просьбой “склеить 301 редиректом все страницы на http со страницами на https” соответственно.
Шаг 5: Ожидание переиндексации сайта
Если вы нигде не накосячили то склейка происходит довольно быстро: 1-2 недели в Google и 2-4 недели в Яндексе.
Все нормально:
- Если у вас были скрипты репостов — они будут показывать 0, т.к. http и https это 2 разные версии сайта;
- Сайт временно может падать по трафику и позициям в момент склейки. После всей процедуры с большей вероятностью все восстановится;
- Внешние ссылки будут переклеены в среднем от 4 недель до пары месяцев;
Вроде все страхи описал.
Поздравляю, теперь у вас рабочий сайт на https, самое время заняться проверкой сертификата и сделать это можно на сервисе https://www.ssllabs.com/ssltest/ (или аналогах):
Проверка корректности установки и работоспособности SSL сертификата на веб-сайте
13 популярных ошибок при переходе сайта на https
Пишу самые популярные моменты, которые знаю из своего опыта или опыта коллег:
- Сделать 302 редирект вместо 301 для склейки версий http с https;
- Сделать редирект всех внутренних страниц сайта на главную;
- Допустить цикличные редиректы страниц;
- Забыл, что твой сайт без www, но склеить с https://www.site.ru;
- Забыл прописать новый путь для sitemap.xml;
- Пропустил этап с заменой абсолютных внутренних ссылок;
- Не изменил урлы в скриптах и медиа-контенте;
- В карте сайта указаны урлы на версию с http;
- Описался при наборе домена при получении сертификата и он выдан не на нужный сайт;
- Может сломаться 1С, если забыли обновить данные;
- Сайт интегрирован с различными API и вы забыли изменить адреса;
- Косяки с rel=”canonical” на старые страницы;
- Не очистил кэш и начал сам себе выдумывать проблемы.
А с какими косяками вы сталкивались?
Ответы на несколько вопросов
Напоследок несколько популярных вопросов, которые могут всплыть: