Для того чтобы перевести сайт на HTTPS нужно выполнить несколько шагов:
1. Включить возможность доступа к сайту по HTTPS
Для этого подключите SSL-сертификат в настройках хостинга. Чаще всего это можно сделать бесплатно на любом нормальном хостинге, таком как Timeweb.
2. Внести правки в core/config/config.inc.php
if (!defined('MODX_URL_SCHEME')) { $url_scheme= $isSecureRequest ? 'https://' : 'http://'; //заменить на: if (!defined('MODX_URL_SCHEME')) { $url_scheme= 'https://';
3. Отредактировать соответствующую настройку в MODX
Системные настройки -> [Поиск по ключу] server_protocol
Установить https.
4. Убедится в доступности всех подключаемых файлов по HTTPS
Если на сайте используются соронние скрипты, стили, картинки или любые другие файлы, то они должны быть доступны по https. Для этого убедитесь, что адрес к ним прописан через https://
или //
. Например:
- <script src="
//
code.jquery.com/jquery-1.11.2.min.js"></script> —Хорошо!
- <script src="
https://
code.jquery.com/jquery-1.11.2.min.js"></script> —Хорошо!
- <script src="
http://
code.jquery.com/jquery-1.11.2.min.js"></script> —Плохо!
Проверить все ли в порядке можно через консоль браузера. Также, если что-то не так, то вы не увидете зеленую пометку в адресной строке браузера о том, что сайт "Надежный".
Добавить редирект в .htaccess с HTTP на HTTPS
(На Timeweb достаточно включить переадресацию в настроках сайта в панели управления (Люблю за это этот хостинг!))
Бывает, что переадресация работает некорректно, и выдает ошибку too many redirects
. Попробуйте разные варианты редиректов, представленных ниже. Какой-то должен подойти.
КСТАТИ! Поделитесь в комментариях тем способом, который оказался рабочим у вас, если варианты из этой статьи вам не подошли. Спасибо!
Вариант 1 (работает для sprinthost.ru)
#RewriteEngine on (Если до этого по коду не включено) RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule ^(.*)$ https://SITE-NAME.ru/$1 [R=301,L]
Другой вариант редиректа (работает для webhost1.ru):
#RewriteEngine on (Если до этого по коду не включено) RewriteCond %{ENV:HTTPS} !on RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Еще пример, в частности подходящий для хостинга mochahost
#RewriteEngine on (Если до этого по коду не включено) RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://SITE-NAME.ru/$1 [R,L]
Пример для хостинга godaddy
RewriteCond %{SERVER_PORT} 80 RewriteCond %{HTTP_HOST} ^(www\.)?SITE-NAME\.com RewriteRule ^(.*)$ https://www.SITE-NAME.com/$1 [R,L]
5. Обновить кэш сайта
Готово. Настройка SSL-шифрования в системе MODX завершена.
5.1 не забудьте
Не забудьте внести правки в robots.txt
(поменять дерективу sitemap
), а также указать основное зеркало сайта в Яндекс- и Гугл-вебмастере.
Сработал второй вариант редиректа
Если руками убрать лишнее (MODX_URL_SCHEMEsite.ru/), то входит нормально. Не подскажите, в чем может быть проблема?
1. Настройка сайта — https
2. Корректировка конфигов из пункта 2.
3. Корректировка .htaccess по варианту 1.