Сегодня столкнулся с очередной задачей - есть сайт на Joomla 3, его нужно заставить работать по протоколу HTTPS. Вроде бы все просто - зайти в панель управления хостинг-провайдера и по акции установить бесплатный SSL-сертификат. Все это не заняло много времени, единственное - пришлось зарегистрировать сайт в Желтых страницах - это требовалось для подтверждения получения SSL-сертификата. Регистрация бесплатная, труда не составила и в скором времени для домена был активирован SSL-сертификат и сайт можно было переключать на HTTPS.
В Joomla это делается на первый взгляд просто - в панель управления, раздел Система - Общие настройки - Сервер и в выпадающем списке выбираем последний пункт:
... сохраняем настройки и вроде бы все должно заработать! Проверяем...
Вводим в адресной строке браузера https://site.ru и видим, что сайт буквально развалился на части! Страницы отображаются криво, картинок нет, джаваскрипты не работают. В чем дело?
В Joomla 3 есть то ли баг, то ли особенность - чтобы заставить сайт корректно работать по HTTPS, нужно сделать три вещи:
1. Подключаемся к сайту по FTP и идем по адресу public_html/libraries/joomla/uri/uri.php. Открываем этот файд в редакторе и ищем строку 66. Там видим оператор IF и два действия - либо присвоить переменной https значение "://", либо "s://". Вставляем два раза "s://", так чтобы код имел вот такой вид:
if (isset($_SERVER['HTTPS']) && !empty($_SERVER['HTTPS']) && (strtolower($_SERVER['HTTPS']) != 'off'))
{
$https = 's://';
}
else
{
$https = 's://';
}
Сохраняем файл на сервере.
2. Делаем перенаправление адресов с http:// на адреса с https://. Для этого заходим в файл .htaccess в корне сайта и добавляем в него строки сразу после RewriteEngine On
RewriteEngine on
RewriteCond %{HTTP_HOST} ^site\.ru [NC]
RewriteCond %{HTTP:X-Forwarded-Proto} ^http$
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
3. В файле Robots.txt не забываем поменять host: http://www.site.ru на host: https://www.site.ru
4. В Яндекс.Вебмастере нужно выполнить "переезд" сайта на домен с https://
На этом мой переезд сайта на протокол HTTPS был успешно завершен.
Как ие еще проблемы могут возникнуть при смене протокола с HTTP на HTTPS?
Еще могут возникнуть проблемы с изображениями, скриптами и формами, которые загружаются не по https://, а по http://. Если на страницах присутствуют элементы с прописанными вручную абсолютными адресами, то вполне возможно, что браузер не будет их отображать. Если это произошло, нужно при помощи консоли браузера отследить ошибки при загрузке и исправлять их уже вручную. Если же на сайте все адреса относительные, проблем возникнуть не должно.