В связи со скорым выходом 56 версии Chrome, которая будет показывать уведомление ‘Not Secure’ при посещении сайтов без SSL, я постепенно перевожу все свои сайты на использование HTTPS.
Сайты на Joomla конечно же тоже есть в этом списке.
Поскольку у меня сайты работают не на одном сервере, не на одном apache, а на целой связке серверов, то возникают некоторые сложности с настройкой HTTPS подключения и корректной работой некоторых скриптов.
В моём случае если ничего не включать в настройках Joomla и заходить на неё по https, то картинки, css, js грузились по http, что не допустимо.
В интернете почти всюду встречается рецепт:
- Включаем принудительно SSL в настройках Joomla.
- Получаем циклическую переадресацию ‘too many redirects’.
- Редактируем /libraries/joomla/environment/uri.php (в версии 3.5 /libraries/joomla/uri/uri.php)
Заменяем
|
|
на
|
|
тем самым делая условие абсолютно бесполезным.
В этом случае сайт больше не сможет работать по HTTP, не используя HTTPS.
Вся эта ситуация вырисовывается от не верных настроек вэб сервера, в моём случае серверов.
Бэкэнд всё так же думает что используется HTTP соединение, php соответственно тоже, ссылки строятся без учёта HTTPS.
Рекомендую для начала почитать статью
SSL между фронтендом и бэкендом через несколько прокси серверов и сделать как там указано. В таком случае не нужно будет вносить изменения в файлы скрипта.
Но если хостер не ведётся на ваши уговоры, или у вас что-то ещё не получается, можно изменить всё тот же uri.php, но несколько иным способом.
Находим код и комментируем его, в начале строки поставив два слеша ‘//’.
|
|
Строкой ниже добавляем строки
|
|
в этом случае Joomla будет проверять не только наличие переменной $_SERVER[‘HTTPS’], но и $_SERVER[‘HTTP_X_FORWARDED_PROTO’], который доступен на много чаще в не совсем верных конфигурациях.
Плюс этого способа в том, что в Joomla не нужно включать принудительное использование SSL, ваши пользователи по прежнему могут использовать сайт как по HTTP, так и по HTTPS.
Ещё раз, в настройках Joomla ‘Включить SSL’ это принудительное включение, т.е. при входе на сайт по HTTP, автоматически все будут перенаправляться на версию сайта с использованием HTTPS.
Ссылки на статический контент (картинки, css, js) должны формироваться правильно без этого параметра. Но Joomla должна верно определять что сейчас работает через HTTPS.
Использованы материалы:
anikin.pw
issues.joomla.org