Я очень долго сопротивлялся переводу сайта на безопасный протокол https однако обстоятельства всё-таки вынудили меня заняться этим, как оказалось, не самым сложным делом. В сети достаточно много информации о том, как поэтапно перевести свой сайт, блог или другой ресурс на https получив SSL сертификат. Однако мне пришлось воспользоваться сразу несколькими сайтами, хотя мой случай достаточно тривиален. В итоге я решил собрать материал в одной статье, а заодно поделиться собственным опытом. Да и поисковики оценят.
В первую очередь хочется поблагодарить авторов сайта БаблоФил, с которого я взял основную массу информации по переводу собственного сайта на протокол https. Кому интересно вот ссылка на статью источник. Однако в моём случае пришлось слегка отступить от предложенной инструкции, так как у меня был хостинг в другом месте. И кое-какие другие нюансы и особенности.
Поэтому давайте расскажу об исходных данных моего ресурса еще один великолепный шаг
Сайт работает на движке WordPress
Хостингом служат один из самых популярных хостингов России reg.ru
SSL сертификат я решил использовать бесплатный от let’s encrypt, который предлагается прямо в панели управления сайтом
На моём сайте используется минимум плагинов: в основном это текст из базы и пара модификаций исходного кода темы
Всё это означает, что сайт достаточно обычный, и инструкция, которую я размещу чуть ниже, скорее всего подойдет для большинства аналогичных блогов и сайтов. Так как большая часть сайтов в сети сейчас пишется на вордпрессе, и, если вы читаете статью на русском языке, то скорее всего хостинг и домен вы тоже брали где-то в России, очень может быть, что там же где и я.
Почему я только сейчас решил перевести сайт на https
Поисковые системы уже несколько лет настаивают на том, что пользователи сайта должны безопасно получать свои данные. А это можно обеспечить только используя шифрование и работу по безопасному протоколу https. Однако:
мне казался процесс перевода достаточно сложным и проблематичным
кроме того я боялся потерять большую часть трафика своего сайта в процессе перевода
мне очень не хотелось разбираться во всех нюансах перевода
Я даже был готов заплатить за процесс перевода сторонним людям, но так и не нашел специалистов, которым можно доверять этот вопрос и свой сайт, да ещё и за приемлемую сумму. Побоялся я раздавать пароли от админки.
Вынудило же меня к переводу:
в первую очередь появление в браузере мобильного телефона предупреждений о небезопасном содержимом при переходе на мой сайт
особенно неприятно было наблюдать предупреждение при переходе из социальных сетей, так как сайт вообще не открывался во встроенном браузере chrome. Браузер говорил, что сайт не безопасен. Точка.
кроме того, уже примерно полгода я наблюдаю, как мой сайт нагло используется мобильными операторами (особенно Теле 2), для размещения собственной рекламы. Без зазрения совести они подменяли мои рекламные блоки и вставляли свои собственные. Прямо в текст статей.
Короновирусная инфекция сильно повлияла на трафик, так как путешествия практически прекратились, и большая часть читателей ушла с сайта, и я решил, что хуже уже не будет, а значит пора заняться переходом
я по прежнему не намерен ничего продавать, но всё же считаю, что из уважения к читателям, стоит обезопасить свой ресурс, от подмены злоумышленниками
Поэтому самое время перейти к простому плану перевода сайта с HTTP на HTTPS
Перевод сайта с HTTP на HTTPS — пошаговая инструкция
Предподготовка перед любыми серьезными изменениями на сайте
Самым первым делом нужно сделать бэкап базы данных и самого сайта. В большинстве случаев это делается достаточно просто, методами вашего хостинг-провайдера. Например у regru ежедневно, два раза в день, происходит автоматическое копирование бэкапов сайта. Так что, если вы где-то накосячите, то всегда сможете откатиться к актуальной версии без потерь работоспособности.
Я попробовал на всякий случай сделать бэкап своей базы, тут всё очень просто:
Переходим в панель управления сайтом (в моём случае это CPanel)
Далее в управление базами данных phpMyAdmin
Находим нужную базу (если у вас их несколько)
Нажимаем кнопку Экспорт. Я выбрал Экспорт в sql формате — возможно вам пригодится в дальнейшем
На всякий случай сохраните копию у себя на диске. Правда чуть позже я столкнулся с несколькими неприятностями, при восстановлении из бекапа:
Файл бекапа в моем случае составлял более 100 МБ, при том, что разрешенный размер на импорт составляет 50 МБ. Решил очень просто — заархивировал файл. После чего размер стал вполне пригодным.
Не очень понятно, как расставлять галочки при импорт файла бекапа — я оставил всё по умолчанию.
После восстановления из архива сайт chfpe не заработал, так как я забыл добавить пользователя в базу. Делается это через CPanel во вкладке базы данных MySQL
Впрочем, я понадеялся на бекапирование со стороны хостинга и продолжил процедуру переведа сайт.
Первый этап — подготовка базы переезду
Особенностью вордпресса является то, что все ссылки как на статьи, так и на картинки размещаются прямо в тексте таблицы, причём ссылки не относительные, а абсолютные, вплоть до указания протокола. Соответственно если у вас изначально сайт был на обычном протоколе http, то и все ссылки будут с указанием именно этого протокола, что при подключении сертификата даст ошибку «смешанный контент» и не полную безопасность содержимого. Поэтому первым этапом считаю важным сделать возможным выбор протокола по средствам браузера. Для этого потребуется выполнить несколько запросов в вашем PHP my admin или поизвращаться с бекапом.
Вариант 1: запросы к базе
Для этого:
возвращаемся в phpMyAdmin
переходим в нужную базу
открываем вкладку SQL и вставляете запросы
Для выполнения нужно нажать кнопку «вперед» или «ок»
На самом деле для большинства сайтов достаточно выполнить один-единственный запрос:
update wp_posts set post_content = REPLACE(post_content, ‘http://’, ‘//’);
Тем самым вы поменяете все ссылки в ваших постах с жесткого указания протокола на относительное, когда браузер сам будет решать, по какому протоколу следует обращаться. Такой способ чуть более универсален. Хотя можно и жестко проставить «https://» вместо «//». Кстати встречал в паре топовых блогов, в статьях по переходу на защищенный протокол информацию, что такой запрос не работает. Видно там ребята, очень далеки от SQL — в общем никому не верьте и не извращайтесь со вторым способом замены ссылок.
В моем случае для обновления всех ссылок на сайте потребовался и второй запрос, так как я активно использую категории и подписи к ним, где тоже встречаются и ссылки и картинки:
update wp_term_taxonomy set description = REPLACE(description, ‘http://’, ‘//’);
Возможно в вашей базе будут и другие сущности, требующие замены. Но вряд ли, если вы пользуетесь стандартными темами, стандартного вордпресса, без большого количества плагинов.
Вариант 2 — предложенный в качестве альтернативы
Именно такой способ предлагают в качестве альтернативы классическим запросам. Хочу обратить внимание, что у меня как раз он не заработал корректно. На сайте куча всего отвалилось, пришлось воспользоваться бекапом. Но всё же:
у вас уже есть бекап вашей базы, сделайте его копию у себя на диске
откройте получившийся файл в любом текстовом редакторе, например Notepad++ или нечто подобное
нажимаем ctrl+f (найти) и переходим на вкладку найти и заменить
в поле найти ставим http:// в поле заменить https://
нажимаем enter и сохраняем получившийся файл
чуть позже (уже подключив к сайту сертификат SSL) можно будет залить этот бекап на сайт
Лично мне больше нравится вариант 1, так как с запросами мне привычней работать. Кроме того базу можно подготовить заранее, потратив пару десятков минут свободного времени. А к остальным этапам переходить уже позже. Так как работоспособность сайта не нарушится.
Второй этап выбор и покупка SSL сертификата
Для большинства блогов и ресурсов вроде моего достаточно будет воспользоваться бесплатным сертификатом от компании let’s encrypt. Проект мой некоммерческий, поэтому подтверждение юридического адреса не требуется — важно просто начать шифровать данные.
Если же ваш проект носит коммерческий характер, у вас есть юридическая фирма, и вообще сайт используется для работы, то скорее всего у вас есть специалисты, которые итак помогут вам переехать нf безопасный протокол https. При этом бесплатным сертификатом уже не отделаться, так он сильно подорвет доверие к жадной фирме, сэкономившей несколько тысяч рублей. Впрочем есть разные уровни сертификатов — например дорогие, именные, как у крупных компаний. Тогда рядом с замочком в браузере будет писаться название компании — это красиво и добавляет вам веса. Но вернемся к блогам.
На моем хостинге подключение ssl сертификат от let’s encrypt занимает буквально пару минут. Всё что вам нужно сделать это:
перейти в CPanel
там перейти в безопасность — «Бесплатный SSL от LE»
заказать выпуск сертификата для сайта и всех его алиасов.
Как только это произойдет, занимает это обычно 5 минут вы уже можете попробовать перейти на свой сайт по протоколу https. Вбив его в адресной строке. Скорее всего заветного замочка ещё не появится, но перейти вы уже должны. Плюс этого сертификата то, что он автоматом будет обновляться и перевыпускается у вас каждые три месяца. А теперь переходим к решению проблем и безопасностью, не дающим показать замочек слева от адресной строки.
Этап 3 убираем смешанный контент
Скорее всего на вашей странице всё ещё находятся ссылки с адресом «http» вместо безопасного протокола «https». Это легко проверить в любом браузере вызвав «исходный код страницы» и поиском найдя http. У меня таких мест оказалось несколько:
потребовалось через редактор тем поменять ссылки в заголовке в футере сайта (header.php, footer.php), там я их когда-то ставил руками, возможно вам не потребуется вносить такие изменения
изменить ссылки в виджетах, то есть в тех местах, куда я залез в своё время руками
в большинстве случаев потребуется всего лишь зайти в настройки вашего сайта и там поменять адрес с http на https. После этого большая часть ссылок автомтически перейдет на безопасный протокол
можно предположить, что кому-то может помешать кэш различных ускоряющих работу плагинов — просто сбросьте его во время перехода
любой самописный модуль, где адрес прописан не относительный, тоже может стать источником проблемы — но всё решаемо.
Как только при переходе на свой сайт по безопасному протоколу вы начинаете видеть замочек, можно переходить к следующему этапу.
Этап 4 настройка редиректа с http на https
В какой-то мере это позволит сохранить внешние ссылки на ваш сайт, а также рейтинг страниц в поисковых системах. Но об этом ещё буду говорить дальше. Настройка редиректа задача творческая — имеется несколько вариантов её решения. Мне наиболее удобным показался способ через изменение файла .htaccess. Для этого:
Подключаемся к своему ресурсу по ssh, например, используя приложение Putty. Хотя лично я, для всяких подобных операций, когда нужно закинуть файл или что-то поправить на сайте предпочитаю ftp клиенты программу WinSCP — простая, удобная, бесплатная. При подключении указываете адрес хостинга, логи и пароль
В настройках программы выбираете «отображать скрытые файлы»
находите на у себя на сервере файл .htaccess
вставляете следующие настройки
RewriteEngine On
RewriteCond %{ENV:HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Почему-то мне помогли именно эти директивы из всего многообразия предложенного в сети
Этап 5 настройка файла robots и sitemap
В файле robots.txt необходимо указать основное зеркало вашего сайта, теперь оно будет начинаться с https. Сам файл расположен в корне сайта, куда можно зайти как по , так и по FTP. Я снова выбрал программу winSCP. Заодно проверьте, что в файле роботс правильно указана ссылка на файл карты сайта. Он тоже теперь должен начинаться с https. В любом случае файл роботс очень любят как гугл, так и яндекс, так что уделите некоторое внимание ему. В файле роботс должны быть следующие директивы (разумеется с указанием вашего сайта):
Если вы генерирует карту сайта автоматически, через какой-либо плагин, то скорее всего к этому моменту у вас уже будет лежать свежая карта сайта с указанием безопасного протокола. То есть все ссылки будут начинаться с HTTPS. На всякий случай зайдите и проверьте карту. И принудительно перегенерите её, если протокол в ссылках не поменялся.
Этап 6 — оповестить поисковые системы о переезде с HTTP на HTTPS
Две самые популярные поисковые системы в России это, разумеется, Яндекс и google, поэтому оповещать будем в первую очередь их. Все остальные системы подтянутся автоматически. Да и трафик с остальных пренебрежимо мал. А вот поисковых монстров уведомить надо, чтобы они не подумали, что в сети появился дубль вашего сайта. Ведь в глазах роботов сайты действительно разные, но с одинаковым содержимым. Это можно значительно понизить ваш рейтинг, точнее рейтинг вашего сайта, переехавшего на новый протокол.
Поэтому заранее подготовьтесь и начинаем с Яндекса
так как часто именно он является основным источником поискового трафика для русскоязычных сайтов:
заходим по адресу на сайт Яндекс веб-мастера. Если вы там ещё не регистрировались, то очень зря. Сейчас самое время (желательно ещё до переезда)
Добавляем версию вашего сайта с новым протоколом. В моем случае я ещё добавил алиас сайта Anystep.ru
переходим в раздел настройки индексирование -> переезд сайта. Ставим галочку добавить https после чего появляется сообщение о том что заявка принята и где-то в течение нескольких недель произойдет переиндексирование сайта.
По окончанию процесса (через несколько недель) Вашим основным зеркалом сайт с протоколом https. К нему будут привязаны все ваши уникальные тексты, Яндекс ИКС, а ссылки с поисковых выдач будут вести на него. Тогда же у сайта появится достижение «замочек» — безопасность использования
Оповещение Google о переезде сайта
Думаю, что основная причина в выбранной тематике, и публике. Но мой сайт в основном посещают с мобильных устройств. И поисковые трафик с Гугла поэтому у меня выше, чем с Яндекса. Но не всегда. В любом случае Гугл тоже нужно оповестить.
вам необходимо зайти в google search panel.Опять же, если ещё не регистрировались, то сделайте это обязательно
добавить там ссылки на новый адрес сайта. А я повторюсь, что добавление протокола https, в глазах поисковых систем делает сайт новым.
не забудьте добавить также ссылку на https://www название вашего сайта.
в каждом из случаев добавьте карту сайта, и ожидаете когда google переиндексирует ваш ресурс
из файла robots.txt он узнает о главном зеркале вашего сайта И постепенно начнет выдавать именно правильное название страниц с протоколом https при поисковых запросах
Заключительный этап
На заключительном этапе достаточно ускорить индексацию. Точнее переиндексацию вашего ресурса:
Для этого достаточно заново сделать репосты ваших самых популярных статей в социальных сетях. Социальные сети последнее время используются поисковыми системами очень активно для индексирования страниц.
Например можно зайти либо в google аналитику, либо Яндекс Яндекс метрику. Там выбрать самые популярные страницы и в течение нескольких дней снова выложить эти статьи в свои группы, чаты и стены в социальных сетях
Как видите всё оказалось достаточно несложно. Даже я с небольшим багажом знаний в сфере перевода справился буквально за пару часов. О результатах пока рано говорить. Вероятно так совало, что начал появляться трафик на сайт. А может уже сейчас, переходя из поиска по старым статьям, люди перестали пугаться страшной надписи о небезопасном сайте. Ведь теперь я использую защищенный протокол. С момента подключения сертификата прошло три дня и трафик вырос примерно на 20%. Это приятно. Обязательно расскажу об изменениях в трафике после окончательной индексации сайта.