Как перенести сайт на HTTPS (защищенный протокол SSL)

Итак, Вы решили идти в ногу со временем, а скорее всего следите за новыми требованиями поисковых сервисов к сайтам. Перед Вами стоит задача перехода вашего сайта на современный защищенный протокол передачи данных. Несмотря на всю простоту данной операции, все самое важное, как всегда скрыто в деталях. Чтобы не допустить досадных ошибок в переносе сайта с HTTP на HTTPS, об которые многие вебмастера набили шишки, давайте разберем все нюансы перехода на SSL.

Что такое HTTPS?

Изначально все сайты работали на HTTP (HyperText Transfer Protocol) – то есть протокол передачи гипертекста. HTTP функционирует с 1992 года, что делает его морально устаревшим. К тому же в процессе его работы обнаружены уязвимости в обеспечении безопасности передачи данных. Чтобы исправить эту ситуацию и повысить степень защиты данных в 2000 году впервые разработали и применили шифрование сетевого трафика по новому алгоритму с использованием протоколов SSL и TLS, то есть Secure Sockets Layer или стандарт передачи зашифрованных данных через сеть. Новое решение применили поверх существующего протокола HTTP – так появился защищенный протокол HTTPS (HyperText Transfer Protocol Secure).

После установки защищенных сертификатов передачи данных на свой сайт, владелец ресурса сделает безопасным передачу и получение данных.
Одним из мотиваторов перехода ресурсов на безопасный протокол стала компания Google, которая напрямую заинтересована в обеспечении надежного трафика. Google анонсировала бонусы и преимущества сайтов на HTTPS в ранжировании в поисковой выдаче, по сравнению с теми, кто еще работает на HTTP. То есть теперь наличие на сайте протокола HTTPS станет одним из факторов ранжирования. А сайты будут иметь дополнительный информационный значок — тип соединения.

Фото Так выглядит сайт на HTTPS
Так выглядит сайт на HTTPS
Фото А так выглядит сайт на HTTP
А так выглядит сайт на HTTP

Значок “i” означает следующее.

Фото Как перенести сайт на HTTPS (защищенный протокол SSL) 3

Виды SSL сертификатов.

Сертификаты можно разделить на несколько видов:

  • — платные или бесплатные (например “Let’s encrypt”);
  • — именные или неименные;
  • — на один домен (обычные SSL и Wildcard сертификаты) или мультидоменные (SAN сертификаты);
  • — доверенные или самоподписанные.

Основные типы:

  • — Esential SSL — стоимость небольшая, оформляется быстро. На один домен.
  • — Instant SSL — для оформления нужно предоставить регистрационные данные юр. лица либо физ. лица владельца. На один домен.
  • — SGC SSL-сертификат — может работать на старых операционных системах и браузерах. На один домен.
  • — Обычный Wildcard — более дорогой, так как выдается на все поддомены корневого домена.
  • — EV (Extended Validation) сертификат — только для юр. лиц. Включает расширенную проверку, а регистрация занимает больше времени.
  • — EV Wildcard и EV SGC — как и Wildcard и SGC, но с расширенной проверкой.

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

Какие же выгоды будет иметь ваш сайт от перехода на HTTPS?

Преимущества HTTPS

  1. Сайт выглядит более официальным, солидным и внушающим доверие в глазах посетителей. Значок защищенного протокола содержит информацию о сертификате, а это располагает.
  2. Так как защищенный протокол шифрует данные, то вы получаете защиту от перехвата сетевого соединения и повышенную защиту передаваемых данных.
  3. Лояльность поисковых сервисов, что пока официально не подтверждено.
  4. Браузеры поддерживают более быстрое соединение и передачу данных HTTP/2 через HTTPS, то есть вы выигрываете в скорости.

Недостатки HTTPS

Если есть плюсы, то должны быть и минусы. Какими же недостатками обладает переход на HTTPS.

  1. Для правильного и корректного переезда сайта на новый протокол важно не допустить грубых ошибок, которые часто совершают вебмастера без опыта.
  2. Трафик на сайт после переезда частично снизится. Важно сделать это падение минимальным и не продолжительным по времени. При правильном переезде позиции сайта не теряются или восстанавливаются в кратчайшие сроки.
  3. Какого-то явного прироста в трафике, только потому что вы внедрили HTTPS не будет. Но это однозначно еще один бал в развитие вашего сайта.
  4. В некоторых случаях HTTPS может замедлить работу вашего сайта, что потребует индивидуальных доработок.
  5. На подключение SSL-сертификата и переезд сайта на HTTPS вы в любом случае потратите силы, время и деньги.
  6. В Google Analytics пропадает трафик между рефералами на HTTP и HTTPS. Это больше относится к сайтам партнеров. Для решения данной проблемы нужно на своем HTTPS-сайте добавить на страницы мета-тег:

<meta name="referrer" content="директива" />

где директива это:
none — не передавать;
origin — передавать протокол и домен;
none-when-downgrade — не передавать при переходе с HTTPS-сайта на HTTP-сайт;
unsafe-url — всегда передавать;

Подробнее тут

Подготовка сайта к переезду на HTTPS

Меняем адреса внутренних ссылок

Начальной задачей, которую лучше сделать до всех правок на сайте, будет изменение адресов внутренних ссылок на сайте (перелинковки) с абсолютных на относительные. То есть нужно изменить адреса ссылок с такого вида:

https://www.goldenweb.com.ua/kursi-seo-v-kharkove/ - абсолютная ссылка

на ссылки такого вида:

/kursi-seo-v-kharkove/ - относительная ссылка с любым доменом.

либо:

//www.goldenweb.com.ua/kursi-seo-v-kharkove/ - относительная ссылка с любым протоколом.

Для чего это делать? После смены протокола ссылки продолжают вести на HTTP адрес сайта и в лучшем случае на новый адрес страницы мы попадем через редирект (что не желательно), а в худшем — получим ошибку 404. Поменяв ссылки на относительные мы освобождаемся от указания протокола в адресе и ссылки работают корректно.

Меняем адреса картинок и медиа файлов

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

Для фотографий, которые хранятся на Вашем сайте, необходимо поменять адреса и ссылки на них на относительные.

Ссылки такого вида:

https://www.goldenweb.com.ua/wp-content/uploads/2014/10/logo_kursi-SEO.png

поменять на:

//www.goldenweb.com.ua/wp-content/uploads/2014/10/logo_kursi-SEO.png

либо:

/wp-content/uploads/2014/10/logo_kursi-SEO.png

Если это не сделать, изображения после переезда станут недоступны по старым адресам и перестанут отображаться.

Меняем подключение скриптов и стилей

В начале страницы у Вас идет подключение внешних скриптов и стилей.

Ссылки такого вида:

<script type='text/javascript' src='http://www.goldenweb.com.ua/wp-includes/js/jquery/jquery.js?ver=1.12.4'></script>

нужно поменять на такие:

<script type='text/javascript' src='//www.goldenweb.com.ua/wp-includes/js/jquery/jquery.js?ver=1.12.4'></script>

а ссылки стилей:

<link rel='stylesheet' id='style-css' href='http://www.goldenweb.com.ua/wp-content/style.css'>

необходимо поменять на:

<link rel='stylesheet' id='style-css' href='//www.goldenweb.com.ua/wp-content/style.css'>

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

Важно!

Если внешние ресурсы не поддерживают протокол HTTPS, то ссылки на них оставляем в формате HTTP://вашсайт.com

Установка SSL-сертификата

Здесь все предельно просто. Либо приобретаете платный, либо скачиваете бесплатный SSL сертификат.

Далее Вам необходимо его установить на сервер. Чаше всего это можно осуществить через панель управления на Вашем хостинге. Практически все хостинги сейчас предлагают установку SSL сертификатов на ваш сайт. Поэтому поинтересуйтесь о предоставляемых услугах, либо запросите поддержку по установке. Зачастую сложностей в установке не возникает. Но если ваш хостинг не поддерживает защищенный протокол, то придется его менять и переходить на новый, более современный.

После установки нужно проверить доступность сайта по двум адресам: HTTP://вашсайт.com и HTTPS://вашсайт.com. Если по какому либо адресу сайт не доступен — необходимо срочно исправить проблему.

Настройка сайта под HTTPS

Следующий этап — настройка служебных файлов вашего сайта.

Настройка Robots.txt

Не стоит забывать, что Ваш сайт по адресу HTTP://вашсайт.com и HTTPS://вашсайт.com для поисковых сервисов совершенно разные ресурсы, которые будут к тому же полными дублями, а это негативно сказывается на позициях сайта. Поэтому в директиве Host мы должны прописать новый правильный адрес:

Host: https://вашсайт.com

То есть мы указываем поисковику основное зеркало сайта уже с адресом https://вашсайт.com

Важно!

Перед тем как настраивать редирект, убедитесь что сделали следующие действия. В противном случае позиции сайта просядут.

В файле Robots.txt меняем хост и сайтмап на:

Sitemap: httрs://вашсайт.com/sitemap.xml

Host: httрs://вашсайт.com

Генерируем новые и обновляем эти файлы на хостинге и в панелях вебмастеров: Google Console и Яндекс Вебмастера.

Добавляем в вебмастерах Google и Яндекс новые версии вашего сайта с HTTPS как отдельные проекты. Добавить ресурс в Гугле и «+» в Яндексе.

Фото Как перенести сайт на HTTPS (защищенный протокол SSL) 5б
Фото Как перенести сайт на HTTPS (защищенный протокол SSL) 5а

К новым сайтам в вебмастера загружаем новые Robots.txt и Sitemap.xml с директивами

Sitemap: httрs://вашсайт.com/sitemap.xml

Host: httрs://вашсайт.com

В Google Console также добавляем файл в «Список ссылок в Disallow Tool»

Настраиваем регион.

В Яндекс вебмастерах в версии сайта с HTTP заходим в Индексирование/ Переезд сайта и ставим галочку напротив «Добавить HTTPS», при необходимости «Добавить WWW» и кнопку «Сохранить»

Фото Как перенести сайт на HTTPS (защищенный протокол SSL) 3

Ждем момента когда зеркала будут склеены (между проектами появиться связь, а нижний станет тусклого цвета). Ускорить этот процесс можно путем добавления страниц через «Переобход страниц» в Яндексе и Посмотреть как Гугл бот в Google Console. Только после склейки зеркал можно настраивать редирект.

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

Редирект с http на https

Теперь можно настраивать редирект сайта с HTTP на HTTPS. Этот момент также содержит множество нюансов.

Первое, что необходимо сделать — выбрать основное зеркало сайта и склеить зеркала. То есть прописать редирект на версию сайта либо с www.вашсайт.com либо без «www» просто вашсайт.com.

Но склейку зеркал нужно сделать таким образом:

Для сайта без «www» —

http://www.вашсайт.com редирект на https://вашсайт.com

https://www.вашсайт.com редирект на https://вашсайт.com

Для сайта с «www» —

http://вашсайт.com редирект на https://www.вашсайт.com

https://вашсайт.com редирект на https://www.вашсайт.com

Вы заметили что в обоих случаях конечный адрес редиректа с https. Команда на склейку зеркала прописывается дважды: для сайта на http и для сайта на https. Но получатель один.

Как это делается на практике. Вам необходимо в файл .htaccess прописать код.

Редирект для склейки зеркал на https для сайта с «www»

RewriteCond %{HTTPS_HOST} .
RewriteCond %{HTTPS_HOST} !^www\.вашсайт\.com [NC]
RewriteRule (.*) https://www.вашсайт.com/$1 [R=301,L]

RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^www\.вашсайт\.com [NC]
RewriteRule (.*) https://www.вашсайт.com/$1 [R=301,L]

Редирект для склейки зеркал на https для сайта без «www»

RewriteCond %{HTTPS_HOST} ^www.вашсайт.com$ [NC]
RewriteRule ^(.*)$ https://вашсайт.com/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^www.вашсайт.com$ [NC]
RewriteRule ^(.*)$ https://вашсайт.com/$1 [R=301,L]

После внесения правок обязательно проверяем корректность работы редиректа. Проще всего это делать посредством сервиса проверки ответа сервера Bertal.ru (https://bertal.ru/) Вводим адрес сайта в строку и нажимаем проверить. Что проверяем? Допустим у нас главное зеркало с www.

Вводим адрес сайта http://вашсайт.com – получаем редирект на https://www.вашсайт.com

Фото Как перенести сайт на HTTPS (защищенный протокол SSL) 4
Фото Как перенести сайт на HTTPS (защищенный протокол SSL) 5

Вводим адрес сайта https://вашсайт.com – получаем редирект на https://www.вашсайт.com

Мы видим, что вводимый нами адрес без «www» отдает код 301 и перенаправляется на страницу https с «www», которая отдает код 200. Значит все правильно настроено. Если у Вас другой результат, ищите ошибку и исправляйте.

Если у Вас главное зеркало сайта без «www», то вводим http://www.вашсайт.com и должны получить https://вашсайт.com и проверяем https://www.вашсайт.com и должны получить https://вашсайт.com.

Второй этап настройки редиректа с HTTP на HTTPS – общий редирект страниц сайта.

Самый простая и распространенная команда для редиректа это:

RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://вашсайт.com/$1 [R=301,L]

Она подойдет в большинстве случаев и для большинства CMS систем. Но также часто она не срабатывает и вызывает ошибку сервера или бесконечный редирект. То есть Ваш сайт перестает работать либо код ответа сервера показывает множественный 301 редирект. Это происходит из-за особенности Вашей CMS системы сайта и настройки Вашего сервера. Поэтому существуют и другие правила для постраничного редиректа всего сайта с протокола http на https.

Команды редиректа с HTTP на HTTPS для Wordpress, Opencart, MODX, Joomla

RewriteCond %{HTTPS} =off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]

RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

RewriteCond %{ENV:HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteCond %{HTTP:X-HTTPS} !1
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

RewriteCond %{HTTP:CF-Visitor} '"scheme":"http"'
RewriteRule ^(.*)$ https://www.domain.com/$1 [L]

RewriteCond %{HTTP:X-Forwarded-Protocol} !=https
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

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

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_FILENAME} !robots\.txt
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

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

Важно!

Любой редирект должен быть в один шаг! Что это значит? При проверке ответа сервера мы должны получать такой ответ, с одной строкой 301.

 

Фото Как перенести сайт на HTTPS (защищенный протокол SSL) 5

Если строк с 301 кодом две и более, значит редирект работает некорректно! Если например при вводе http://вашсайт.com мы попадаем сначала на http://www.вашсайт.com с кодом 301, а потом на https://www.вашсайт.com, то такой редирект неправильный.

Еще раз:

http://вашсайт.comhttp://www.вашсайт.comhttps://www.вашсайт.comНЕПРАВИЛЬНО!
http://вашсайт.comhttps://www.вашсайт.comПРАВИЛЬНО!

Также некоторые CMS системы имеют свои особенности переезда на HTTPS. По опыту в этом плане самая простая это Wordpress. Далее более подробно о переезде на защищенный протокол на MODX и Opencart.

Переезд сайта на MODX на протокол https

1. Заходим в Системные настройки

Фото Как перенести сайт на HTTPS (защищенный протокол SSL) 7

2. В фильтр параметров «Core» вводим «http» и в найденной строчке меняем значение на «https»

Фото Как перенести сайт на HTTPS (защищенный протокол SSL) 8
Фото Как перенести сайт на HTTPS (защищенный протокол SSL) 9

3. В фильтр настроек вводим «link_tag_scheme» и меняем значение параметра с «-1» на «1».

4. В файле .htaccess прописываем редирект. Либо этот:

RewriteCond %{HTTPS} =off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]

Либо любой другой из приведенных выше (какой сработает).

Переезд сайта на MODX на протокол https

1. Вносим правки в файлы /config.php и admin/config.php (в каталоге сайта на хостинге)

Файл config.php в корневой папке сайта

Строку define(‘HTTP_SERVER’, ‘http://вашсайт.com/‘); не меняем!

Строку define(‘HTTPS_SERVER’, ‘http://вашсайт.com/‘); меняем на define(‘HTTPS_SERVER’, ‘https://вашсайт.com/‘);

Файл config.php в папке admin

Строку define(‘HTTP_SERVER’, ‘http://вашсайт.com/admin/‘); меняем на define(‘HTTP_SERVER’, ‘https://вашсайт.com/admin/‘);

Строку define(‘HTTP_CATALOG’, ‘http://вашсайт.com/‘); меняем на define(‘HTTP_CATALOG’, ‘https://вашсайт.com/‘);

Строку define(‘HTTPS_SERVER’, ‘http://вашсайт.com/admin/‘); меняем на define(‘HTTPS_SERVER’, ‘https://вашсайт.com/admin/‘);

Строку define(‘HTTPS_CATALOG’, ‘http://вашсайт.com/‘); меняем на define(‘HTTPS_CATALOG’, ‘https://вашсайт.com/‘);

2. Стамим модуль http://forum.opencart.pro/topic/3005-https-fix-for-2x/ Тут ничего сложного.

3. Переходим Система/Настройки/Редактировать/Вкладка Сервер/Использовать SSL — включаем этот параметр «ДА».

4. В .htaccess прописываем команду склейки зеркал и редиректа с http на https.

5. Строку define(‘HTTP_SERVER’, ‘http://вашсайт.com/‘); меняем на define(‘HTTP_SERVER’, ‘https://вашсайт.com/‘);

Проверка на наличие ошибок

После всех манипуляций необходимо проверить сайт на наличие ошибок, которые могли возникнуть в результате переезда сайта на защищенный протокол HTTPS.

Вводим адреса сайта в адресную строку браузера с адресами http://вашсайт.com, http://www.вашсайт.com, https://вашсайт.com, https://www.вашсайт.com. Во всех случаях мы должны попасть на нужное нам зеркало сайта.

Обязательно проверяем коды ответа сервера всех вариантов адресов. Редирект должен быть в один шаг!

Открываем исходный код страницы сайта (правой кнопкой или Ctrl+U) и поиском ищем ссылки с адресом http. На сайте не должно быть ни одной внутренней ссылки на http и желательно ни одной внешней! Также ссылки можно искать программами Xenu или Screaming Frog. Если что-то нашли исправляем. Также можно посмотреть ошибки в консоли (правой кнопкой «исследовать элемент»/ «Консоль»)

Проверяем видимость страниц в панели вебмастеров: Посмотреть как Гугл бот в Google Console, Проверить статус URL в Яндекс Вебмастерах.

Проверяем работоспособность форм, корзины и другого функционала сайта, работоспособность скриптов и админ панели.

Заключение

Теперь остается только ждать полной переиндексации сайта, то есть страницы с http в индексе постепенно заменяться на страницы с https.

Данные рекомендации должны помочь вам разобраться в алгоритме переезда сайта на https и без последствий для трафика и позиций выполнить переход.

Leave a Reply