http://wm-monitoring.ru/ ')) {alert('Спасибо за то что установили нашу кнопку! =)');} else {alert('Очень жаль! =(');}"> http://wm-monitoring.ru/

Главная Новости

Переход на HTTPS без потери трафика

Опубликовано: 23.08.2018

видео Переход на HTTPS без потери трафика

Переход на https wordpress. Проблемы о которых не говорят!

Всем большой привет! Браузер Google Chrome не намерен отступать от своих намерений и двигается вперед по намеченному пути, внедряя предупреждения безопасности для HTTP сайтов. Mozilla Firefox также активно пропагандирует протокол HTTPS, подталкивая вебмастеров устанавливать SSL сертификаты на свои сайты. Но как избежать проблем, связанных с потерей трафика и дохода?



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


Безопасный SEO-переезд на HTTPS

10 последовательных шагов по переезду сайта на HTTPS

Всего мною было переведено 6 сайтов. Первый шаг был сделан 18 сентября 2016 года, тогда я стал записывать в блокноте все свои действия. Сегодня эти записи помогут мне сформировать цельную инструкцию по переезду сайта на работу по HTTPS протоколу без потери трафика из поисковых систем.

1. Получение SSL сертификата

Первое, что необходимо сделать – приобрести SSL сертификат (платный или бесплатный) и подключить его к домену. Это можно сделать самостоятельно в панели управления хостингом (ISPmanager, CPanel, VestaCP) или обратиться за помощью в техподдержку. Некоторые хостеры предлагают подключить бесплатный SSL с автоматическим продлением в один клик.

Но сегодня я не стану затрагивать вопросы, связанные с выбором и установкой SSL сертификата – это отдельная тема. Сейчас у меня подключены сертификаты Let’s Encrypt. До этого использовал StartSSL, но после шумихи с бесплатными SSL-сертификатами StartCom и WoSign последовала закономерная блокировка этих удостоверяющих центров в популярных браузерах.

2. Внесение изменений в robots.txt

Давайте перейдем к файлу robots.txt и изменим директиву Host, указывающую на главное зеркало:

1 Host : https : //webliberty.ru

Host: https://webliberty.ru

Если директива Host не использовалась раньше, тогда добавьте ее в любом месте, т.к. она является межсекционной. Согласно справке Яндекса, если сайт работает по защищенному каналу связи, то обязательно указывать протокол.

С 20 марта 2018 года Яндекс официально прекратил поддержку директивы Host. Её можно удалить из robots.txt, а если оставить, то робот её просто игнорирует.

3. Переезд сайта в сервисе Яндекс Вебмастер

Теперь необходимо зайти в Яндекс Вебмастер и в разделе Индексирование перейти на страницу Переезд сайта. Отметьте флажком Добавить HTTPS и сохраните изменения.

Появится информационное сообщение о том, что Яндекс не гарантирует сохранение количества страниц сайта в поиске, его позиций или посещаемости в случае изменения главного зеркала:

Заявка от 05.12.2016 на переезд сайта с домена webliberty.ru на https:// webliberty.ru обрабатывается (это может занять некоторое время).

Также стоит добавить новый сайт с HTTPS протоколом, после склейки они будут объединены в группу зеркал.

Именно поэтому при переезде сайта особое внимание нужно уделить этой поисковой системе, в то время как Google достаточно простого редиректа для склейки. В принципе, склейку зеркал я уже делал при исключении www из URL, в этом нет ничего сложного.

4. Добавление нового сайта в Google Search Console

В Google нет инструмента переезда, поэтому просто добавьте в Search Console новый сайт с HTTPS. Старый можно не удалять, он может понадобиться в дальнейшем для анализа процедуры перехода.

Да, в консоли есть инструмент Изменение адреса, но знайте, что в данном случае он не поможет, т.к. в справочной системе есть примечание:

В настоящее время инструмент не поддерживает следующие виды переноса сайта: изменение имен субдоменов, изменение протокола (HTTP на HTTPS) и изменение путей.

5. Работа с картой сайта sitemap.xml

Переходим к карте сайта sitemap.xml. На всех сайтах у меня сформирован минимальный набор необходимых плагинов, в частности за карту сайта отвечает одноименный модуль в составе плагина All in One SEO Pack. Если Вы используете этот же плагин, то в настройках модуля включите опцию Динамическая карта сайта. Таким образом поисковый робот при доступе к сайту по защищенному протоколу будет получать карту, содержащую список URL с HTTPS, что ускорит индексирование по новому адресу.

Еще в сентябре 2016 года в основных настройках плагина была возможность переключения протокола для канонических ссылок и я это прекрасно помню по сайтам-первопроходцам. Начиная с версии 2.3.11 в Canonical URL были внесены изменения, связанные с автоматической установкой протокола, поэтому на следующих сайтах такой опции я уже не обнаружил. Очень жаль, эта функция позволяла получать роботу карту сайта с URL по HTTPS даже при посещении HTTP версии сайта.

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

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 remove_action ( 'wp_head' , 'rel_canonical' ) ; add_action ( 'wp_head' , function ( ) { if ( ! is_singular ( ) ) { return ; } $id = get_queried_object_id ( ) ; if ( ! $id ) { return ; } $cpage = get_query_var ( 'cpage' ) ; if ( $cpage ) { $url = get_comments_pagenum_link ( $cpage ) ; } else { $url = get_permalink ( $id ) ; $page = get_query_var ( 'page' ) ; if ( $page > 1 ) { if ( get_option ( 'permalink_structure' ) == '' ) { $url = add_query_arg ( 'page' , $page , $url ) ; } else { $url = trailingslashit ( $url ) . user_trailingslashit ( $page , 'single_paged' ) ; } } } $url = str_replace ( 'http://' , 'https://' , $url ) ; echo "<link href= \" {$url} \" rel= \" canonical \" /> \n " ; } ) ;

remove_action ('wp_head', 'rel_canonical'); add_action ('wp_head', function() { if (!is_singular()) { return; } $id = get_queried_object_id(); if (!$id) { return; } $cpage = get_query_var('cpage'); if ($cpage) { $url = get_comments_pagenum_link($cpage); } else { $url = get_permalink($id); $page = get_query_var('page'); if ($page > 1) { if (get_option('permalink_structure') == '') { $url = add_query_arg('page', $page, $url); } else { $url = trailingslashit($url) . user_trailingslashit($page, 'single_paged'); } } } $url = str_replace('http://', 'https://', $url); echo "<link href=\"{$url}\" rel=\"canonical\" />\n"; });

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

Теперь вернемся к нашему файлу robots.txt и внесем изменения в пути до карты сайта или добавим нужную строку, если ранее ее не использовали:

1 Sitemap : https : //webliberty.ru/sitemap.xml

Sitemap: https://webliberty.ru/sitemap.xml

А в Яндекс Вебмастере и Google Search Console нужно добавить обновленную карту сайта с новым протоколом.

6. Замена внутренних ссылок на HTTPS, решение проблемы Mixed Content

Дальнейшее действие подразумевает замену всех абсолютных путей к стилям, скриптам, изображениям, а также замену всех внутренних ссылок по протоколу HTTP на относительные или простую замену протокола Я предпочел сменить протокол путей и ссылок на HTTPS и ниже поделюсь с Вами как это можно быстро сделать с помощью SQL-запросов к базе данных.

При сохранении записи в таблицу wp_posts в поле guid записывается глобальный уникальный идентификатор (Globally Unique Identifier). Давайте изменим это поле для смены протокола, выполнив следующий запрос к БД через phpMyAdmin:

1 UPDATE wp_posts SET guid = REPLACE ( guid , 'http://webliberty.ru' , 'https://webliberty.ru' ) ;

UPDATE wp_posts SET guid = replace(guid, 'http://webliberty.ru','https://webliberty.ru');

Произведем замену протокола всех ссылок в контенте, то есть выполним запрос к полю post_content в таблице wp_posts нашей базы данных:

1 UPDATE wp_posts SET post_content = REPLACE ( post_content , 'http://webliberty.ru' , 'https://webliberty.ru' ) ;

UPDATE wp_posts SET post_content = replace(post_content, 'http://webliberty.ru', 'https://webliberty.ru');

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

1 UPDATE wp_comments SET comment_content = REPLACE ( comment_content , 'http://webliberty.ru' , 'https://webliberty.ru' ) ;

UPDATE wp_comments SET comment_content = replace(comment_content, 'http://webliberty.ru', 'https://webliberty.ru');

На что следует обратить внимание при выполнении этих SQL-запросов:

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

SQL-запросами мы внесли львиную долю изменений, но есть места, где все же придется заменить поработать вручную — это могут быть файлы темы и виджеты, где используются внутренние ссылки с HTTP протоколом. Также стоит обратить внимание на загрузку внешних стилей, скриптов, фреймов и картинок — все они должны загружаться по HTTPS, иначе они не будут загружены, а в консоли появятся ошибки смешанного содержимого (Mixed Content).

7. Решение проблемы политики CORS

Если на сайте подключены шрифты Font Awesome , тогда они могут не загружаться — это связано с появлением в консоли браузера ошибки примерно такого содержания:

Redirect from ‘fontawesome-webfont.woff’ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource. Origin ‘http://webliberty.ru’ is therefore not allowed access.

Чтобы избежать появления ошибки достаточно добавить в файл .htaccess строку:

1 Header set Access -Control -Allow -Origin *

Header set Access-Control-Allow-Origin *

В том случае, если браузер все равно не загружает шрифты и выдает ошибку, вместо символа * укажите прямой адрес своего сайта со старым HTTP протоколом:

1 Header set Access -Control -Allow -Origin http : //webliberty.ru

Header set Access-Control-Allow-Origin http://webliberty.ru

CORS (Cross-origin resource sharing) в переводе с английского языка означает совместное использование ресурсов между разными источниками. Современные браузеры используют эту политику безопасности в своих технологиях. До тех пор, пока мы не поставим редирект с HTTP на HTTPS эта политика будет действовать, поэтому используем строку до заключительного этапа.

8. Ожидание склейки зеркал в Яндексе

Ждем письма от Яндекс Вебмастера (или уведомления, если не настроена рассылка) о смене главного зеркала. До тех пор, пока это уведомление не поступит, ни в коем случае нельзя ставить редирект! В противном случае все страницы сайта будут исключены из индекса поисковой системы Яндекс, склейка займет значительно больше времени из-за отсутствия доступа к robots.txt для HTTP версии сайта.

Но есть исключение из этого правила. Допустимо использовать редирект только в том случае, если исключить из общего правила файл robots.txt. Этого можно добиться, используя в .htaccess:

1 2 3 RewriteCond % { SERVER_PORT } ! ^443 $ RewriteCond % { REQUEST_URI } ! ^/ robots .txt RewriteRule .* https : //%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

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

Все свои сайты я переводил на безопасный протокол только дождавшись склейки через Host, кроме одного. Это был последний сайт на WordPress c установленным в отдельном каталоге форумом на phpBB.

Расскажу о нем немного подробнее. Переезд был запущен 27 января 2017 года, на протяжении трех месяцев никаких подвижек не происходило, скорее наоборот, ситуация усугублялась из-за странной индексации: через апдейт одни и те же страницы появлялись в выдаче то с HTTP, то с HTTPS — это происходило до марта.

С сайтом явно происходило что-то не ладное, т.к. предыдущие сайты меняли основной домен в течение 2-3 недель, не больше.

Тогда 10 марта я решил поставить редирект на все страницы, кроме robots.txt и стал ожидать подвижек. Числа 20 в Яндекс Каталоге наконец-то у домена сменился протокол на HTTPS, но с апдейтами в индекс по-прежнему залетали старые страницы, включая самые нелепые, которых и вовсе никогда не существовало. Возникало ощущение, что поисковый робот Яндекс вышел из ума и хватал все подряд, лишь бы зацепиться.

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

Ответ техподдержки внушал доверия, но в голове все равно вертелись мысли, мол наверняка всем так отвечают:

Здравствуйте, Денис!

Мы проверили, процесс склейки Ваших сайтов идет успешно, и в скором времени главным зеркалом станет https://***.ru/. Вам нужно еще немного подождать, ориентировочно одну-две недели.

На следующий день был апдейт поисковой выдачи, а также тИЦ. Не знаю, совпадение или нет, но уже на следующий день я наконец-то получил долгожданное уведомление о смене главного зеркала! Думаю, что мое обращение сыграло свою роль ????

9. Настройка 301 редиректа с HTTP на HTTPS

Теперь, когда процесс склейки зеркал в Яндексе завершен, можно приступать к завершающему этапу. Заходим в консоль WordPress, в разделе Настройки — Общие меняем в полях Адрес WordPress и Адрес сайта протокол нашего сайта на HTTPS.

Открываем phpMyAdmin и выполняем следующий SQL-запрос к базе данных, с помощью которого делаем замену полей с опциями home и siteurl в таблице wp_options:

1 UPDATE wp_options SET option_value = REPLACE ( option_value , 'http://webliberty.ru' , 'https://webliberty.ru' ) WHERE option_name = 'home' OR option_name = 'siteurl' ;

UPDATE wp_options SET option_value = replace(option_value, 'http://webliberty.ru', 'https://webliberty.ru') WHERE option_name = 'home' OR option_name = 'siteurl';

В файле .htaccess ставим постоянный редирект с HTTP на HTTPS:

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

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

10. Настраиваем заголовок HTTP Strict Transport Security

Последний штрих — устанавливаем форсированное защищенное соединение через протокол HTTPS с помощью механизма HSTS (HTTP Strict Transport Security). Браузер будет принудительно загружать сайт по защищенному протоколу, для чего в .htaccess нужно добавить строку:

1 Header always set Strict -Transport -Security "max-age=31536000; includeSubDomains; preload"

Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"

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

Подведение итогов

Подводя итог проделанной работе, ниже я подготовил сводную таблицу по своим сайтам. Ориентируясь на эти сведения можно сделать некоторые выводы о сроках склейки зеркал, переносе показателя тИЦ.

Сайт Начало переезда ТИЦ до переезда Смена главного зеркала ТИЦ после переезда
Сайт №1

(webliberty.ru)
05.12.2016 250 14.12.2016 275
Сайт №2

(игровой с форумом)
27.01.2017 140 24.03.2017 70
Сайт №3

(о природе)
24.10.2016 100 04.11.2016 100
Сайт №4

(игровой)
18.09.2016 0 27.09.2016 0
Сайт №5

(услуги)
18.09.2016 0 07.10.2016 0
Сайт №6

(сервис)
22.09.2016 0 07.10.2016 0

Стоит отметить, что в последнее время Яндекс стал чаще выкатывать апдейты поисковой выдачи (практически через день), поэтому переезд не растянется на продолжительный период. А Google активно начинает индексировать сайт по новому протоколу после настройки редиректа, с ним проблем быть не должно.

Графики посещаемости я не стал публиковать, но могу гарантировать — снижения трафика не наблюдалось, даже более того, по некоторым проектам зафиксирован незначительный рост ???? Желаю всем удачи!

Карта
rss