Вопрос о том, как перевести сайт на https стоит у меня уже давно, но руки никак не доходили. Недавно я даже купил сертификат, чтобы подключить шифрование хотя бы к основному сайту, но тут же столкнулся с трудностями и поэтому не стал спешить. Теперь тот час настал. Как перейти на https и не потерять трафик? Об этом и пойдет речь.
Сразу скажу, что к моменту написания этой статьи я уже сделал перевел один сайта на https (сайт про алиэкспресс), и теперь имея некоторый опыт я в режиме написания статьи буду переводить другой свой сайт.
Где купить ssl сертификат?
Для начала вам нужно определиться с сертификатом. Есть платные варианты и их очень много, есть и бесплатные, но их мало. Свой первый сайт я подключил к платному сертификату Comodo, который мне обошелся всего в 500 рублей за год. Купил я его через свой хостинг IHOR (на данный момент хостинг УМЕР — перешел на Бегет — рекомендую!!!), очень хороший хостинг, всем его рекомендую:
После заказа сертификата вам придет письмо от Comodo с архивом ключей и еще секретный ключ в теле письма. Если честно, то сам его я подключить сходу не смог, потом забросил на пару недель это дело, а потом просто написал хостеру и они за 15 минут мне все подключили. Спасибо им еще раз.
500 рублей — это самый дешевый сертификат, если посмотрите на картинку выше, то большинство сертификатов стоят бешеные деньги! Но это не про нас. Даже 500 рублей можно не платить, так как можно взять и бесплатные сертификаты.
Где взять бесплатный SSL сертификат?
Тут есть два пути, один проще другого. Первый вариант — это подключить к серверу бесплатный сертификат от Let’s Encrypt. То есть, вы устанавливаете на сервер их программное обеспечения и получаете КУЧУ бесплатных сертификатов на все свои сайты.
Тут можно пойти несколькими путями. Если у вас виртуальный хостинг от того же хостинг IHOR, то там в панели уже встроен инструмент по подключению SSL сертификатов от Let’s Encrypt:
Если у вас виртуальный сервер с ISPManager, как у меня, то с недавних пор в этой панели можно нажав одну кнопку установить Let’s Encrypt на сервер: ИНТЕГРАЦИЯ — МОДУЛИ
Если у вас нет панели, на многих хостингах ее нужно покупать отдельно, то можно установить Lencrypt через терминал. Кстати, на IHOR панель дается бесплатно ;) Сделать это можно такими командами:
1 |
apt-get install git |
1 |
cd /home/ |
1 |
git clone https://github.com/letsencrypt/letsencrypt |
1 |
cd letsencrypt |
1 |
wget https://github.com/letsencrypt/letsencrypt/archive/master.zip |
1 |
unzip master.zip |
1 |
mv letsencrypt-master letsencrypt |
1 |
cd letsencrypt |
Но как вы понимаете, это все для знатоков, и это еще самое простое, что нужно сделать, так как дальше нужно для каждого сайта сгенерировать сертификат и прописать путь к нему в настройках сервера. Не ищите лёгких путей — тогда это ваш путь!
У этого сертификата есть один минус — его нужно продлевать каждые три месяца. Чтобы не делать это постоянно вручную, нужно настроить CRON на сервере, чтобы команда генерации происходила автоматически. Как написано в [urlspan]справке ISPManager[/urlspan], там это все можно настроить на раз два.
Где еще можно взять бесплатный SSL сертификат?
Еще один вариант, который даже проще предыдущего — это воспользоваться сервисом CloudFlare, который не только даст вам бесплатный сертификат, но и защитит вас от DOSS атак, а так же поможет в ускорении сайта путем кэширования и распределенных серверов:
Раньше все мои сайты были подключены к этому сервису, но потом произошла неприятная ситуация и я оставил там лишь один сайт. Почитать об этом можно в этой статье, может кому-то это будет принципиально важно.
Чтобы подключить свой сайт к CloudFlare нужно у регистратора доменных имен изменить DNS записи, чтобы весь трафик шел через них. У меня это такие адреса:
Еще раз напишу их тут: elma.ns.cloudflare.com и hugh.ns.cloudflare.com, но у вас они могут быть и другими, их вам дадут при добавлении сайта. Поменяв DNS адреса нужно подождать до двух суток, пока DNS сервера переиндексируют записи.
После этого нужно зайти вот сюда и включить SSL сертификат для конкретного сайта. Хорошо, что у меня там висит один сайт, есть что показать:
Заходим на вкладку CRYPTO и внизу включаем режим Flexible SSL — в этом режиме устанавливать сертификат на сервер не нужно. И все! Проверяем, доступен ли теперь сайт «Теологический блокнот» по https протоколу?
Сайт доступен, это пока самое главное. Но сайт пока работает и по обычному незащищенному протоколу, поэтому браузер показывает, что сайт защищен не полностью. Не переживайте, так и должно быть пока. Идем дальше и теперь полностью переделываем сайт под HTTPS.
Как перевести wordpress на https?
У меня везде стоит WordPress и показывать буду все на его примере. Подготовку к переходу на https нужно начать со смены абсолютных путей в относительные. Это как?
Вот пример ссылки с абсолютным путем:
1 |
https://aliprofi.ru |
А вот та же ссылка, но уже имеющая относительный путь:
1 |
//aliprofi.ru |
Есть и другие варианты, но я вам советую использовать именно этот вариант, будет меньше ошибок. Открываем файлы нашей темы на вордпресс в Notepad++ и ищем по документу фразу http.
К примеру, у вас может быть такой скрипт:
1 |
<script async src="<strong>http:</strong>//zmoe.ru/wp-content/themes/12345i/js/yotube.js"></script> |
Превращаем его вот в такой, просто удалив http:
1 |
<script async src="//zmoe.ru/wp-content/themes/12345i/js/yotube.js"></script> |
Ничего сложного, думаю, что суть вы поняли. Возможно, что на своем сайте вы и не найдете таких ссылок, но проверить все же стоит.
Как изменить ссылки с http на https?
После этого все ссылки на сайте с http нам нужно переделать на https. Сделать это можно двумя способами: плагином или через базу данных.
ВНИМАНИЕ! Во избежании проблем отключите все кэширующие плагины на сайте и кэширование на сервере!
Плагин — это самый простой вариант и можно начать с него. Устанавливаем на wordpress плагин Velvet Blues Update URLs и после этого идем в его настройки:
Пишем старый адрес сайта на http, ниже новый на https, ставим галочки все кроме последней и нажимаем кнопку. Пять секунд и все ссылки изменены!
Но плагин не меняет все ссылки, например, он не поменял ссылки на мои же страницы в комментариях. Поэтому лучше воспользваться такими командами и через базу данных изменить все ссылки:
1 2 3 4 5 6 7 8 9 10 11 |
Заменяем ссылки в комментариях. UPDATE wp_comments SET comment_content = REPLACE (comment_content, 'http://teonote.ru', 'https://teonote.ru'); Заменяем ссылки у авторов комментариев. UPDATE wp_comments SET comment_author_url = REPLACE (comment_author_url, 'http://teonote.ru','https://teonote.ru'); Меняем ссылки во вложениях к постам и страницам. UPDATE wp_posts SET guid = REPLACE (guid, 'http://teonote.ru', 'https://teonote.ru') WHERE post_type = 'attachment'; Меняем все ссылки к картинкам. UPDATE tn_posts SET post_content = REPLACE(post_content, 'http://teonote.ru', 'https://teonote.ru') |
Замените url сайта на свой и еще может понадобиться изменить префикс таблиц базы данных, если у вас не стандартный wp — а он не должен быть стандартным. Заходим сюда и даем команды по очереди:
Что интересно, плагин не справился с этим сайтом, почему-то вырубился, а этим методом все прошло без сучка и задоринки! Теперь можно пробовать включить HTTPS версию сайта. Даже если вы еще не установили или не купили сертификат, можно создать самоподписанный сертификат и просто попробовать, как все будет работать.
В ISPManager нужно поставить вот тут галочки и сайт начинает работать по https, правда браузер показывает, что соединение не защищенное:
Нужно нажать кнопку ДОПОЛНИТЕЛЬНО и потом внизу нажать на ссылку ПЕРЕЙТИ НА САЙТ. Теперь идем в админку WordPress и меняем в НАСТРОЙКИ — ОБЩИЕ адрес сайта с http на https:
Вы так же можете столкнуться с такой ситуацией — Сайт выполнил переадресацию слишком много раз. Удалите файлы cookie..
Или его просто может жутко перекосить! Мне помогло то, что в config.php в это место я вписал такой код:
А вот и сам код, его вставить нужно ИМЕННО в ЭТО место, иначе может не работать:
1 2 3 |
define('FORCE_SSL_ADMIN', true); if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') $_SERVER['HTTPS']='on'; |
Без этого кода я не мог зайти в админку сайта, когда в самом вордпресс поменял URL сайта. А на этом сайте без этого кода шаблон перекашивало и тема слетала. Вообще, подводных камней может быть много и вы должны быть к этому готовы хотя бы морально.
Хочу заметить, что настроить сайт через SSL CloudFlare мне нормально не удалось, сайт то перекашивало, то не пускало в админку и код, который я привел выше не помог. Поэтому я решил установить на сервер Let’s Encrypt и подключать сайты через его сертификаты, ведь сайтов у меня несколько штук.
Как я уже писал выше, Let’s Encrypt можно установить через консоль, что я и сделал, и теперь я не могу установить его через панель, а как удалить прошлую версию не знаю. Написал в поддержку хостинга, чтобы мне помогли, теперь жду, как раз время ужинать….
Ну вот, тех поддержка отреагировала оперативно и все мне настроила, теперь если зайти в раздел SSL сертификаты, то я вижу кнопку Let’s Encrypt
Нажимаю ее и мне предлагается создать сертификат для любого из моих доменов. Выбираю тот, который мы настраиваем сейчас и заполняю все поля:
Теперь идем в настройки домена и выставляем там этот сертификат, вместо самоподписанного, который я там добавил ранее. Но сначала нужно на короткое время перевести сайт опять на обычный протокол, а потом уже на наш новый SSL сертификат, чтобы сайт соскочил со старого.
Теперь проверяем наш сайт — у меня все работает, проблем нет!
Ура! я его победил. Но на этом сказка не заканчивается, если мы не хотим потерять трафик (мы по сути создали новый сайт) нужно рассказать поисковым системам о нашем подвиге. Что нужно сделать обязательно?
1. В файле robots.txt нужно заменить строку:
1 |
Host: teonote.ru |
На такую же почти, но указывающую на новую версию сайта:
1 |
Host: <a href="https://teonote.com" target="_blank" rel="noopener" attribute="">https://teonote.com/</a> |
2. Нужно пересоздать карту сайта, чтобы там были ссылки уже через https. До сих пор многие добавляют ссылку на карту сайта в robots.txt, но это делать не нужно, нужно просто добавить путь к карте сайта в Google Console и Яндекс Вебмастер.
3. Теперь мы плавно перешли к Google Console — тут нужно просто создать новый сайт, но уже с https версией протокола:
После этого нужно добавить ссылку на карту сайта, чтобы Google как можно быстрее просканировал «новый» сайт:
4. Теперь добавляем новый сайт в Яндекс вебмастер, вернее мы покажем ему, что у нас сайт теперь на https:
Ну вот и все, теперь осталось ждать, пока Google и Яндекс переиндексируют сайт и поддадут ему пинка, чтобы он вылетел в ТОП ;) Теперь вы знаете, как перейти с http на https просто и бесплатно. Если у вас будут вопросы, то пишите, может чем помогу, хотя так все расписал, что даже ребенок должен понять…
Ну вот и это сайт перевел на https — инструкция по сути нужна мне самому, чтобы перевести все сайты.
Ну вот и это сайт перевел на https — инструкция по сути нужна мне самому, чтобы перевести все сайты.
Спасибо код для админки очень помог. Я уже не знал что делать
Спасибо код для админки очень помог. Я уже не знал что делать
Еще очень важное: не нужно сразу делать перенаправление http на https, пока яндекс не склеит сайты. Так же нужно добавить в Яндекс вебмастер после склейки (а может сразу) версию сайта на https.
Еще очень важное: не нужно сразу делать перенаправление http на https, пока яндекс не склеит сайты. Так же нужно добавить в Яндекс вебмастер после склейки (а может сразу) версию сайта на https.
Можете подсказать как фон сделать пошире (на моём сайте)(например как у вас).
Можете подсказать как фон сделать пошире (на моём сайте)(например как у вас).
В style.css нужно править, но это нужно понимать хоть немного, и часто все индивидуально в каждом шаблоне.
В style.css нужно править, но это нужно понимать хоть немного, и часто все индивидуально в каждом шаблоне.
Здравствуйте, подскажите как вы сделали комментарии на этом сайте (с помощью плагина или это можно в админе вордпресс сделать?)
P.S. Когда я писал этот-же комментарий на телефоне мне на английском языке писали вернитесь назад и попробуйте снова. Исправьте по возможности:)
Здравствуйте, подскажите как вы сделали комментарии на этом сайте (с помощью плагина или это можно в админе вордпресс сделать?)
P.S. Когда я писал этот-же комментарий на телефоне мне на английском языке писали вернитесь назад и попробуйте снова. Исправьте по возможности:)
А что вы имеете под КАК ВЫ СДЕЛАЛИ? Я просто не знаю что вы имеете ввиду? Поясните и я расскажу.
А что вы имеете под КАК ВЫ СДЕЛАЛИ? Я просто не знаю что вы имеете ввиду? Поясните и я расскажу.
Приветствую Вас, zmoe!
‘7 комментариев уже оставлено!» — прикольно. Как такое осуществить? Может подскажете с каким плагином Вы пользуетесь? Спасибо.
Приветствую Вас, zmoe!
‘7 комментариев уже оставлено!» — прикольно. Как такое осуществить? Может подскажете с каким плагином Вы пользуетесь? Спасибо.
Это просто скрипт скрывающий комментарии, могу дать, не проблема.
Это просто скрипт скрывающий комментарии, могу дать, не проблема.
Спасибо, zmoe, за отзыв! У меня движок на WordPress. Ваш скрипт «прикрутится» к WP? Если да, то буду Вам признателен и благодарен. Спасибо.
Спасибо, zmoe, за отзыв! У меня движок на WordPress. Ваш скрипт «прикрутится» к WP? Если да, то буду Вам признателен и благодарен. Спасибо.
Спасибо, за оказанное мне внимание!
Спасибо, за оказанное мне внимание!
Да не за что, если что пишите.
Да не за что, если что пишите.
Здравствуйте. Читал вашу статью. Заметил ошибку в конце статьи в последнем абзаце.
Теперь вы знаете, как перейти с https на http просто и бесплатно.
По моему наоборот нужно написать с http на https не правда ли?
Здравствуйте. Читал вашу статью. Заметил ошибку в конце статьи в последнем абзаце.
Теперь вы знаете, как перейти с https на http просто и бесплатно.
По моему наоборот нужно написать с http на https не правда ли?
Спасибо, точно, описался.
Спасибо, точно, описался.