В большинстве случаях переезд сайта на популярном движке Вордпресс с http на https, при соблюдении необходимых действий во время установка SSL сертификата для сайта на хостинг проходит почти безболезненно и без потерь. Но бывает случаи, когда сайт капризничает и начинается проблемы с загрузкой страниц (эта может быть отдельная страница, например главная страница ресурса) через защищенного протокола.
Я здесь буду рассказывать про своего личного опыта перенеса на https и постараюсь просто объяснить некоторые важные моменты чтобы даже ясно было новичкам. Сначала отмечу, что лучше всего если вы собираетесь заказать SSL сертификат для своего сайта, а потом его загрузить на хостинг идеально будет это реализовать для нового сайта с новым доменом. (Т.е. здесь возня будет меньше, также появления проблем снизится к минимуму из-за того, что все текстовые и медиафайлы файлы будут загружаться на базу сайта уже после установленного сертификата безопасности.
Но с другой стороны у многих имеются сайты, которые работали по протоколу http, а теперь человек хочет, чтобы его сайт работал по протоколу https для чего он решил обеспечить свой сайт с се5ртификатом безопасности. Учитывая, что я про получении и установки сертификата безопасности на хостинг для нового сайта я попробно рассказал здесь, то в данном посте буду описывать процедуру установку SSL сертификата на старый т.е. уже существующий в какое-то время сайт.
И так, о том как получить и загрузить на свой хостинг SSL подробно было рассказано ранее в этом посте поэтому сразу начинаем с того, что уже после загрузки сертификата какие настройки необходимо сделать чтобы сайт успешно работал через защищенное соединение.
Во первых осуществляем настройку на админке WordPress прописываем https вместе http, и естественно сохраняем настройку.
Далее необходимо сделать редирект (по нашему перенаправление) с http на https. А для этого нужно добавить определенный код в конфигурационный файл .htaccess вашего сайта. Для этого нужно зайти на панель управление вашего хостинга, а потом открыть корневую папку сайта (данный файл должен находиться там.) и добавить код. Внимание! Такой файл может отсутствовать в корневой папке вашего сайта, в этом случае придется его создать.
Будем считать, что файл находится в папке и вы его нашли, теперь его необходимо редактировать т.е. добавить код в этот текстовой файл. Самое интересное начинается здесь. Дело в том, что в сети много инструкций по установки SSL для https соединения, и разные люди предлагают разные версии кодов, которые отличаются друг от друга. Я предлагаю вам код реально работающую на моем сайте т. е. опробованную лично мной:
КОД 1
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
Внимание! Вариант с этим кодом работает реально на моем сайте! Но, может быть с вашим сайтом не получиться. Т. е. может быть данный код не сработает в вашем случае. Тогда попробуйте вот этот вариант:
КОД 2
RewriteEngine On
RewriteCond %{HTTPS} =off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]
Но самое удивительное то, что может не работать и этот вариант, и все равно сайт продолжит загружаться по http или появится предупреждение о циклической переадресации. Тогда можете попробовать третий или четвертый вариант этого кода и один из этих вариантов наверняка поможет решить проблему с кодом:
КОД 3
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
КОД 4
RewriteEngine On
RewriteCond %{ENV:HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
И учтите все эти варианты с кодом предлагается и добавляется для редиректа всех страниц сайта с http на https. Но существуют коды для загрузки конкретной и отдельной страницы через безопасное соединение с сервером. Даже есть варианты кодов, которые исключают загрузку определенной страницу ресурса через защищенное соединения.
К сожалению даже после всех этих действий может быть возникновения некорректной работы сайта по протоколу https и появления смешанного контента. Особенно это может случиться из-за картинок, как известно вордпресс их грузит с базы данных. Поэтому возможно будет необходимо покопаться в базе данных для изменения ссылок изображений. Для этого нужно зайти в phpMyAdmin найти нужную базу данных и переходить на вкладку Query и сделать SQL запрос с помощью команды:
UPDATE wp_posts SET `post_content` = REPLACE (`post_content`, ‘src=»http://www.your-site.com’, ‘src=»https://www.your-site.com’);
Если честно признаться я не ахти какой программист или хакер, поэтому не стал решить данную задачу подобным способом, из-за того, что я долго изучал в сети разные мнения, разных блоггеров, которые занимались этим и раздумал все это сделать через phpMyAdmin. Это от части потому, что даже самые опытные вебмастера не рекомендуют этот способ из-за того, что сайт может сломаться и может возникнуть другие проблемы.
Почти все мнения сходится к одному, и все рекомендуют сделать это с помощью подходящего плагина например из этой тройки — Velvet Blues Update URLs, Better Search Replace и Search Regex. Но я поступил совсем по другому с этими изображениями, их у меня было мало, всего штук 10. Поэтому я их всех после установки SSL удалил совсем, а потом переименовал и заново загрузил. И после настройки в админке, добавления редиректа на .htaccess и после перезагрузки изображений у меня с загрузкой сайта по защищенному протоколу проблем нет и думаю не будет. И если даже в дальнейшем появится какие-то проблемы, я думаю все сделаю с помощью плагина, чего и рекомендую вам тоже.
P.S. Если открыть сайт на гуггл-хроме и нажать на кнопку клавиатуры F12 справа на экране открывается исходный код страницы и в разделе Console отражается вся проблема по HTTPS загрузке с красным цветом и указываются некорректные ссылки, если они присутствуют, пока их у меня нет, как видно со скрина:
Таким образом процесс установки сертификата для сайта на сервер хостинга был завершен удачно, в результате чего у меня все ссылки с сайта открывались по протоколу https, следовательно не появятся, если даже появятся, то я уже в курсе как их легко устранить.