Оглавление

Это, вообще, можно сделать? Любой сайт можно перевести на https?

Во-первых, нужно понять возможность перевода сайта на https (рассматриваем самый популярный вариант - бесплатный сертификат Let’s Encrypt). Что может помешать:

проблема: хостинг, на котором размещен сайт, не выдает/не устанавливает такие сертификаты (если еще такие существуют:)

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

проблема: размещено несколько сайтов на одной админке и неосновные домены являются алиасами, для которых выпуск ssl-сертификатов невозможен

решение: для основного сайта выпуск возможен, но необходимо будет воспользоваться видоизмененным редиректом в файле .htaccess для склейки, а для перевода алиаса на защищенный протокол выход один - сделать его НЕ алиасом.

проблема: у домена есть поддомены

решение: нужна возможность выпуска отдельных сертификатов для каждого поддомена ИЛИ выпуск сертификата Wild, который распространяется и на поддомены (не более 99).

проблема: на сайте есть контент, использующий данные с других сайтов, не перешедших на https

решение: ждать пока все сторонние сайты перейдут на защищенное соединение, либо отказаться от этого контента

Ок, выяснили - перевести на https можно. Что дальше? — SSL сертификат

Во-вторых, заказать и установить ssl сертификат:

  • на 90% хостингов вы сможете сами в 1 клик заказать и привязать сертификат к домену;
  • если хостинг не очень или сама ситуация чуть сложнее — закажите ssl на стороннем сервисе (их много, reg.ru, 2domains.ru и т.д.) и загрузите на хостинг (новичкам лучше не пробовать сделать это самим).

Если сайт представляет собой интернет-магазин, то бесплатный сертификат не подойдет.

И это все, мой сайт уже на https? — Нет! Самое сложное впереди... Настраиваем сайт на работу

В-третьих, настроить сайт на работу по новому протоколу и корректную обработку ссылок.

Чек-лист перевода сайта на https:

Настройки административной панели для перехода на https протокол: время и сложность зависят от "админки" (где-то пара кнопок, где-то чуть дольше). Для MODX REVO две системные настройки link_tag_scheme (значение - 1) и server_protocol (значение - https), внимательно с контекстами (! если используете несколько контекстов, то поменять настройки каждого контекста на https).

Настроить редирект в .htaccess. Во всех правилах с явным указанием протокола поменять на https, а также добавить склейку двух зеркал http и https. Причем делать это нужно аккуратно, так как на одном хостинге правило может работать корректно, а на другом вызвать циклическую переадресацию.

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

Вариант 1

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

Вариант 2 (!)

RewriteCond %{ SERVER_PORT} !^443$
RewriteRule .* https://%{ SERVER_NAME}%{ REQUEST_URI} [R=301,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]

Как делать не надо в htaccess

Далее, все стили, скрипты, шрифты должны грузиться через https. Нужно проверить и исправить, как вариант скачать на сайт и грузить их локально.

Если есть абсолютные внутренние ссылки, заменить их на относительные (без указания протокола и домена).

Все внешние ссылки заменить на безпротоколовый вариант (начинать с //, например href=”//a-tum.ru”). К сожалению, при этом (замечено на modx) ссылки открываются через протокол https и если его нет на внешнем сайте, то попадаем на ошибку. 

Проверить файлы robots.txt и sitemap.xml (везде должен быть https протокол).

Скинуть кеш сайта.

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

Ааааааа.... как же мои позиции в ТОПе? — Спокойствие! Все в порядке

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

  • Еще раз проверить файлы robots.txt (директива host) и sitemap.xml
  • Добавить сайт с https в Яндекс.Вебмастер
  • Включить переезд на https в панели Яндекс.Вебмастер для сайта с http
  • Добавить сайт с https в Google Console
  • В настройках Google Analytics поменять в адресе сайта на https
  • После добавления в Яндекс.Вебмастер и Google Console сайта с https проверить доступность и корректность sitemap.xml
  • По возможности заменить внешние ссылки (из соцсетей, в каталогах, Яндекс.Справочник и т.д.) на ссылки с https и в дальнейшем учитывать это при размещении новых ссылок.
Этот сайт использует сервис веб-аналитики Яндекс Метрика и технологию “cookie”.
Я ознакомлен с Политикой в отношении обработки персональных данных и даю согласие на обработку персональных данных.