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

Google увеличил размеры Title и Description
17/05/2016
Ник (имя пользователя) для Инстаграм
07/07/2017
Картинка Как перенести сайт на HTTPS (защищенный протокол SSL) logo
Итак, Вы решили идти в ногу со временем, а скорее всего следите за новыми требованиями поисковых сервисов к сайтам. Перед Вами стоит задача перехода вашего сайта на современный защищенный протокол передачи данных. Несмотря на всю простоту данной операции, все самое важное, как всегда скрыто в деталях. Чтобы не допустить досадных ошибок в переносе сайта с 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 станет одним из факторов ранжирования. А сайты будут иметь дополнительный информационный значок — тип соединения.
Значок “i” означает следующее.

Но официально эту информацию компания не подтвердила и на практике каких либо преимуществ только за наличие HTTPS не замечено.

Виды 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 src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 

нужно поменять на такие:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 

а ссылки стилей:
<link rel='stylesheet' id='style-css'  href='https://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://адрес-сайта.ком

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

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

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

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

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

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

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


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

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

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

В файле Robots.txt меняем хост и сайтмап на:
Sitemap: httрs://адрес-сайта.ком/sitemap.xml
Host:  httрs://адрес-сайта.ком

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

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


К новым сайтам в вебмастера загружаем новые Robots.txt и Sitemap.xml с директивами
Sitemap: httрs://адрес-сайта.ком/sitemap.xml
Host:  httрs://адрес-сайта.ком

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

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

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

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

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



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


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

Первое, что необходимо сделать — выбрать основное зеркало сайта и склеить зеркала. То есть прописать редирект на версию сайта либо с www.адрес-сайта.ком либо без «www» просто адрес-сайта.ком. Но склейку зеркал нужно сделать таким образом:
Для сайта без «www» - 
http://www.адрес-сайта.ком редирект на https://адрес-сайта.ком
https://www.адрес-сайта.ком редирект на https://адрес-сайта.ком
Для сайта с «www» - 
http://адрес-сайта.ком редирект на https://www.адрес-сайта.ком
https://адрес-сайта.ком редирект на https://www.адрес-сайта.ком

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

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

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


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

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

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


RewriteCond %{HTTPS_HOST} ^www.адрес-сайта.ком$ [NC]
RewriteRule ^(.*)$ https://адрес-сайта.ком/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^www.адрес-сайта.ком$ [NC]
RewriteRule ^(.*)$ https://адрес-сайта.ком/$1 [R=301,L]

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

Что проверяем? Допустим у нас главное зеркало с www.
Вводим адрес сайта http://адрес-сайта.ком – получаем редирект на https://www.адрес-сайта.ком

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

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

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

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

Самый простая и распространенная команда для редиректа это:
RewriteCond %{SERVER_PORT} !^443$ 
RewriteRule ^(.*)$ https://адрес-сайта.ком/$1 [R=301,L] 

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



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


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

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

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

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

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

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

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

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

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

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


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

Еще раз:
http://адрес-сайта.ком -  http://www.адрес-сайта.ком -  https://www.адрес-сайта.ком – НЕПРАВИЛЬНО!
http://адрес-сайта.ком -  https://www.адрес-сайта.ком – ПРАВИЛЬНО!

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



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


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

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

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

4. В файле .htaccess прописываем редирект. Либо этот:
RewriteCond %{HTTPS} =off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]

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



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


1. Вносим правки в файлы /config.php и admin/config.php (в каталоге сайта на хостинге)
Файл config.php в корневой папке сайта
Строку define('HTTP_SERVER', 'http://адрес-сайта.ком/'); не меняем!
Строку define('HTTPS_SERVER', 'http://адрес-сайта.ком/');  меняем на define('HTTPS_SERVER', 'https://адрес-сайта.ком/'); 

Файл config.php в папке admin
Строку  define('HTTP_SERVER', 'http://адрес-сайта.ком/admin/'); меняем на define('HTTP_SERVER', 'https://адрес-сайта.ком/admin/');
Строку define('HTTP_CATALOG', 'http://адрес-сайта.ком/'); меняем на define('HTTP_CATALOG', 'https://адрес-сайта.ком/'); 
Строку define('HTTPS_SERVER', 'http://адрес-сайта.ком/admin/'); меняем на define('HTTPS_SERVER', 'https://адрес-сайта.ком/admin/');
Строку define('HTTPS_CATALOG', 'http://адрес-сайта.ком/'); меняем на define('HTTPS_CATALOG', 'https://адрес-сайта.ком/'); 

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

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

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

5. Строку define('HTTP_SERVER', 'http://адрес-сайта.ком/'); меняем на define('HTTP_SERVER', 'https://адрес-сайта.ком/');

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

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

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

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

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

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

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

Заключение

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

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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

11 − 1 =