Переход на HTTPS с сохранением позиций в Яндексе

Начиная с января этого года, Google Chrome помечает HTTPS сайты, как "Надежный".

Начиная с Chrome 56, все HTTP сайты, на которых размещены формы отправки данных, будут получать метку "Не надежный".



Исходя из этого, многие веб-мастера столкнулись с проблемой, что вроде бы уже время переводить сайты на HTTPS протокол для Google, но при этом Яндекс не очень положительно относится к HTTPS по следующим причинам:

1. Яндекс, в отличии от Google, не использует HTTP/2.

Если ваш HTTPS сайт доступен поддерживает HTTP/2, Яндекс будет все-равно использовать медленный HTTP/1.1 через механизм поддержки старых версий (fallback).

2. Многие веб-мастера неверно реализовывают поддержку HTTPS на своих сайтах.

Бывали даже случаи, когда сайты выпадали из индекса из-за неверной настройки сервера.

3. Возможны другие нюансы передачи веса ссылок HTTP зеркала.

Лично у меня, сайт внезапно выпадал за ТОП-100 по некоторым брендовым запросам, после выбора HTTPS, как главного зеркала.



Дальше я расскажу вам, как угодить клиенту, Google и Яндекс одновременно.

В результате, в поисковой выдачи Яндекс, у нас будет все тот же HTTP сайт, в Google HTTPS версия (по желанию), а клиент будет получать быструю HTTP/2 версию (если поддерживает, даже если он перешел по HTTP ссылке) или HTTP-версию, если он не поддерживает HTTP/2.



Первое, что нам нужно сделать, это включить поддержку HTTPS на сервере.

Опционально, я рекомендую включать поддержку HTTP/2, чтобы более 70% ваших пользователей, получали быструю версию вашего сайта.

Как это сделать на примере Ubuntu 16.04 LTS + Nginx + Let's encrypt (можно использовать любой другой сертификат, просто укажите на него путь и пропустите шаги для Let's encrypt)

https://www.digitalocean.com/communi...n-ubuntu-16-04



После включения поддержки HTTPS версии вашего сайта (предпочтительно HTTP/2), вы можете открыть ваш сайт, как по HTTP, так и по HTTPS протоколу.



Дальше, мы добавляем HTTPS версию нашего сайта в Яндекс вебмастер и Google Webmaster.

Открываем robots.txt и указываем (где site.com - адрес вашего сайта):

Host: http://site.com

Дополнительно, вы можете закрепить результат в Яндекс Вебмастер - Индексирование - Переезд сайта



Это означает, что Яндекс должен индексировать HTTP-версию сайта, как главное зеркало, несмотря на появления HTTPS-версии.



Если мы хотим, чтобы Google начал отдавать предпочтение HTTPS-версии, обращаем внимание на

<link rel="canonical" href="https://site.com">, который должна отвечать ваша HTTP-версия сайта.

То-есть, на странице http://site.com/1.html, должен быть указан <link rel="canonical" href="https://site.com/1.html">.

Многие CMS, например, WordPress, прописывают этот тег автоматически.

Просто убедитесь, что в настройках сайта, главным адресом указана HTTPS-версия, если вы хотите, чтобы Google ранжировал именно ее.

Яндекс будет игнорировать этот тег и использовать директиву Host.



Если вы хотите, чтобы Google тоже отдавал предпочтение HTTP версии сайта, тогда обязательно уточните наличие canonical, который указывать на HTTP версию вашего сайта.

Я рекомендую отдавать Google canonical на HTTP версию сайта ибо больших плюсов в ранжировании HTTPS вам не принесет, если вообще принесет сейчас.

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



А теперь самое главное - ваш пользователь будет получать HTTPS версию сайта, даже если он перешел из результатов поиска, где указана HTTP ссылка.

Без редиректов!



И поможет нам в этом технология HSTS.

Это заголовок, который отправляет ваш сервер и говорит, что если клиент хотя бы раз открыл HTTPS версию, то любые запросы к HTTP должны обрабатываться, как к HTTPS.

Простыми словами, если вы зашли на HTTPS://site.com, набрав в адресной строке HTTP://site.com, вы получите все-равно HTTPS://site.com.

Это отличается от редиректа тем, что редирект отсутствует и клиенты, которые не поддерживают или не знают о HTTPS, все также будут получать HTTP версию.



HSTS поддерживают практически все браузеры, которые поддерживают HTTP/2 или SPDY/3.1

http://caniuse.com/#search=hsts

Ваш сервер должен возвращать следующий заголовок (именно такой, без нюансов - дальше объясню)

Strict-Transport-Security: max-age=63072000; includeSubDomains; preload



В инструкции от DigitalOcean, на которую я ссылался выше, уже включен HSTS, вам только нужно добавить preload после includeSubDomains;



Если вы следовали другой инструкции по установке HTTPS на сервере, вы можете отправить этот заголовок из вашей CMS следующим PHP кодом

header('Strict-Transport-Security: max-age=63072000; includeSubDomains; preload');

или установив соответствующий плагин для WordPress (там же можно запретить content sniffing и включить другие опции защиты перехвата и модифицирования трафика)

https://wordpress.org/plugins/security-headers/



Дальше, мы отправляем заявку, чтобы ваш сайт включили в список HSTS preload.

Если вы все правильно сделали, он будет включен в этот список в течение месяца.

Просто указываем адрес вашего домена

https://hstspreload.org/



Это означает, что все современные браузеры, которые поддерживают HTTP/2 или SPDY/3.1 (примерно 80% пользователей), будут получать HTTPS версию вашего сайта, даже если они никогда ее не посещали и запрашивают HTTP версию.

То-есть, Яндекс и Google (если вы так решите), будут сканировать HTTP версию.

В результатах поиска будет HTTP версия.

Но при переходе по ссылке из SERP, возможно два сценария:

1. Если пользователь использует современный браузер (такой, как Google Chrome/Opera Blink/Яндекс браузер/Firefox/Edge/IE11), он получит HTTPS версию по HTTP/2 (или SPDY/3.1) протоколу.

Без редиректов, с минимальной утереей производительности по сравнению с HTTP версией (HTTP/2 поддерживает сжатие заголовок, множество запросов по одному подключению и другие функции, благодаря которым, HTTPS версия будет работать все также быстро, как и HTTP).

2. Если пользователь использует старый браузер (Android 2.3, Nokia браузер, Opera Mini, Opera Mobile, IE8) пользователь получить HTTP версию сайта, которая будет у него работать гораздо быстрее, чем HTTPS на старом протоколе HTTP/1.1.



Таким способом, мы решаем следующие проблемы:

1. Google Chrome помечает ваш сайт, как безопасный.

2. Нам стают доступные новые технологии и преимущества HTTPS, типа Web Push, ServiceWorker, AMP без потери производительности и проблем с ранжированием в Яндексе.

3. Пользователи, которые выходят в сеть из старых и медленных браузеров (10-20%), будут получать HTTP версию, более производительную версию вашего сайта, тем самым, вы сохраните отличные поведенческие факторы.

4. Старые ссылки на HTTP версию и новые на HTTPS будут учитываться в одинаковой мере.

Я все-таки советую использовать HTTP ссылки по тем же причинам, что выше. - Пользователь всегда будет получать версию сайта, которая работает в его браузере лучше.

Но если кто-то из пользователь разместит ссылку на HTTPS, она будет ранжироваться, ничего страшного не случится.
Автора автора