Мои заметки

@alexabudaev notes

Бесплатный HTTPS для сайта WordPress

17.09.2015 | Неважное

Установил TLS-сертификат на сайте Budaev.org, воспользовавшись бесплатным тарифом StartSSL.

О том, как это сделать, достаточно доступно написано на Хабре.

О подготовке и настройках WordPress к переезду на HTTPS я просмотрел, наверное, с десяток источников. Одним из самых пригодившихся является вот этот пост.

Читайте, изучайте. В этой заметке я напишу только о своём опыте.

По поводу получения бесплатного сертификата

Процедура немного изменилась с тех пор, как хабравчанин писал, ждать сертификата вообще не надо нисколько - он выдаётся сразу. Установить на Shared хостинге с cPanel оказалось очень просто - закидываем содержимое сертификата и расшифрованного ключа к нему в соответствующие поля меню "Управление/добавление SSL/TLS". Сервер проверяет их и подхватывает, подставляя недостающие значения.

О подготовке и настройке WordPress

Менять кучу адресов через SQL-запрос к базе данных не рекомендуется, поскольку это может поломать какие-то вещи на сайте. Я сомневаться не стал и сделал такой запрос не только к ссылкам на посты, страницы и перелинковке в них, но и к URL-ам в комментариях.

По совету чувака установил плагин WordPress Force HTTPS - действительно нормально работает и не вызывает ошибок. Явным образом перевёл с www на без www и с https в файле .htaccess. Кстати: проверил, в htaccess у меня чисто, а переадресация с www на https без www работает. Забыл я, что ли, что сделал?

Но.

Казалось бы, все УРЛы заменены, с www (на него не распространяется сертификат, потому что я использовал другой поддомен) переадресация включена и работает, но браузеры пишут, что на страницах сайта обнаружен небезопасный контент, и "замочек" HTTPS не зелёный, а жёлтый.

Помимо выполнения рекомендаций с разных сайтов я проверил настройки всех плагинов, особенно SEO, в которых могут быть настройки с явным указанием адреса сайта в виде "http://budaev.org" (который надо тут же поменять на "https://budaev.org") или с опциями на использование https вместо http. Затем я прогнал сайт через внутренний анализатор битых ссылок - у меня это плагин Broken Links Checker, и внешний - бесплатная утилита Screaming Frog SEO Spider 5.0. Плагин отыскал проблему - у меня все авторские комментарии подписаны http, потому что в профиле WP указан http! Иду в профиль, меняю УРЛ. Далее нашёл несколько странных, пропущенных плагином WP Force HTTPS ссылок в тексте постов и в комментариях - меняю их. Не помогает, точнее, помогает конечно, но замочек всё ещё жёлтый.

Начинаю тупо анализировать код страниц. Проверяю виджеты с простым кодом - нахожу пару внешних ссылок без https (реклама Fozzy, например, на каждой странице). Исправляю, вуаля - зелёный замочек - ваше соединение безопасно!

Единственно, на некоторых страницах админки, в том числе на главной, замочек остался жёлтым. Теряюсь в догадках.

Не забудьте

Яндекс отказывается назначить главным зеркалом https. В таких случаях люди рекомендуют оставить и http, и https версии, чтобы Яндекс проиндексировал https, а потом уже склеивать и отключать http редиректом. Мне кажется, большая честь этому долгому и трудному отечественному поисковику, поэтому указал главное зеркало в robots.txt и оставил 301 редирект везде, где только можно. Насчёт Гугла не понял, пока вроде всё ровно, https-версия добавилась нормально, правда, с Analitycs непонятки: не вижу, работает ли счётчик с новым идентификатором?

Вывод

Переходить на TLS/SSL рано или поздно придётся всем, но пока что эта процедура достаточно сложна, затратна (если не идти моим путём) и полна заморочек с существующим сайтом и доменом. Если создаёте новый - сразу делайте его в HTTPS. Если переносите старый, хорошенько почитайте, что люди об этом пишут, и десять раз подумайте, надо ли вам это. По поводу реакции поисковиков допишу отдельно, пока что поисковые боты как сумасшедшие обходят давно знакомый сайт, пытаясь найти на нём хоть что-то новое.