Как я перенес Вордпресс сайт с http на https

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

Я здесь буду рассказывать про своего личного опыта перенеса на https и постараюсь просто объяснить некоторые важные моменты чтобы даже ясно было новичкам. Сначала отмечу, что лучше всего если вы собираетесь заказать SSL сертификат для своего сайта, а потом его загрузить на хостинг идеально будет это реализовать для нового сайта с новым доменом. (Т.е. здесь возня будет меньше, также появления проблем снизится к минимуму из-за того, что все текстовые и медиафайлы файлы будут загружаться на базу сайта уже после установленного сертификата безопасности.

Но с другой стороны у многих имеются сайты, которые работали по протоколу http, а теперь человек хочет, чтобы его сайт работал по протоколу https для чего он решил обеспечить свой сайт с се5ртификатом безопасности. Учитывая, что я про получении и установки сертификата безопасности на хостинг для нового сайта я попробно рассказал здесь, то в данном посте буду описывать процедуру установку SSL сертификата на старый т.е. уже существующий в какое-то время сайт.

И так, о том как получить и загрузить на свой хостинг SSL подробно было рассказано ранее в этом посте поэтому сразу начинаем с того, что уже после загрузки сертификата какие настройки необходимо сделать чтобы сайт успешно работал через защищенное соединение.

Во первых осуществляем настройку на админке WordPress прописываем https вместе http, и естественно сохраняем настройку.

Настройка HTTPS на админ панели

Далее необходимо сделать редирект  (по нашему перенаправление) с 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 ссылок на браузере

Таким образом процесс установки сертификата для сайта на сервер хостинга был завершен удачно, в результате чего у меня все ссылки с сайта открывались по протоколу https, следовательно не появятся, если даже появятся, то я уже в курсе как их легко устранить.