Перевод MODX Revolution с http на https
Автор Алексей На чтение 2 мин. Опубликовано
Последнее изменение поста: 23 октября 2018 в 18:52
Не так давно у меня была статья: Перевод WordPress сайта с http на https (Let’s Encrypt) за 7 минут, ну так вот перевести MODX с http на https, еще быстрее, у меня весь процесс перевод занимает менее 2х минут. В даваться в особенности покупки или получения SSL сертификата не буду, на хостинге бегет его бесплатно дают, надо 2 раза мышкой щелкнуть и все (смотрите статью про перевод wordpress на https). Объясню только технический момент связанный непосредственно с самим MODX Revo.
Настройки MODX для работы с протоколом https
Тут все просто, настройка только одна. Заходим в «Системные настройки» — переходим в ветку Система и сервер, находим тип сервера и меняем протокол на https
Тип сервера — server_protocol — https
Настройки .htaccess MODX для работы с протоколом https
Открываем .htaccess и добавляем в него следующие строки
RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^(.*)$ https://site.ru/$1 [R=301,L]
Вот пример рабочего .htaccess файла сайта (в нем также правила для склейки домена с www и без www) studies.su, работающего на хостинге бегет.
RewriteEngine On RewriteBase / RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^(.*)$ https://studies.su/$1 [R=301,L] # Rewrite www.domain.com -> domain.com -- used with SEO Strict URLs plugin RewriteCond %{HTTP_HOST} . RewriteCond %{HTTP_HOST} !^studies\.su [NC] RewriteRule (.*) https://studies.su/$1 [R=301,L]
В принципе все.
Сопутствующие статьи: Проверка правильности установки SSL и Смешанное содержимое HTTPS: как его найти и исправить
На форумах видал, у некоторых имеются проблемы с тегом base, типа он все равно выводит путь с http, по этому поводу не чего не могу сказать, так как я не использую base на сайтах MODX, а заменяю его на canonical — MODX SEO-strict — Заменяем base href на link rel canonical.
Если у кого то что то не получается, задавайте вопросы в комментариях, помогу чем смогу!
MODX https перевод сайта на защищенный протокол
Для того что бы сайт на MODX Revolution работал по защищенному протоколу необходимо для начала зайти в системные настройки сайта в фильтре параметров core ввести http и найденный параметр заменить на https
Далее в фильтре системных настроек вводим
link_tag_scheme
в найденном параметре по умолчанию у нас стоит -1 нам необходимо поставить 1 для того что бы сайт работал по защищенном протоколу https.
Уже на данном этапе сайт успешно работает по защищенному протоколу. Но если ввести адрес сайта с http он так же будет доступен. Для того что бы сайт был доступен только по защищенном протоколу нам необходимо настроить редирект в файле .htaccess
Для этого откроем файл .htaccess и расскомментируем следующие строчки:
RewriteCond %{HTTP_HOST} . RewriteCond %{HTTP_HOST} !^modx\.cc [NC] RewriteRule (.*) <a href="https://subgid.com/https://subgid.com/$1">https://modx.cc/$1</a> [R=301,L]
У нас будет происходить редирект с домена с www на домен без www
И выше добавим следующий редирект который перенаправит с адреса http на адрес https
RewriteCond %{HTTPS} =off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]
Возможно на вашем хостинге данный редирект не сработает привожу еще несколько вариантов
Вариант 2
RewriteCond %{SERVER_PORT} !^443$ RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
Вариант 3
RewriteCond %{ENV:HTTPS} !on RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Вариант 4
RewriteCond %{HTTP:X-HTTPS} !1 RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
Вариант 5
RewriteCond %{HTTP:CF-Visitor} '"scheme":"http"' RewriteRule ^(.*)$ <a href="https://www.domain.com/https://www.domain.com/$1">https://www.domain.com/https://www.domain.com/$1</a> [L] #не забудьте заменить на ваш домен
Вариант 6
RewriteCond %{HTTP:X-Forwarded-Protocol} !=https RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
Вариант 7
RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteCond %{HTTPS} off RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
После всего проделанного ваш сайт будет доступен исключительно по защищенному протоколу. Можно смело добавлять его в ЯВ и по истечении недели двух полностью будет переиндексирован. Если на сайте есть Тиц то он отвалится, а после очередного апдейта вернется если на то будет воля великого Яндекса.
P.S. На хостинге Beget можно бесплатно получить сертификат Let’s Encrypt для перехода на https.
Как включить HTTPS (SSL) в MODX
Для того чтобы перевести сайт на 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
), а также указать основное зеркало сайта в Яндекс- и Гугл-вебмастере.
Как настроить HTTPS для MODX
Без лишних вступлений продолжаем говорить о переходе на протокол HTTPS для разных CMS. Сегодня настраиваем MODX.
Раньше мы уже настраивали такие CMS:
Как настроить HTTPS для WordPress
Как настроить HTTPS для Joomla
Как настроить HTTPS на OpenCart
Как настроить HTTPS на PrestaShop
Как настроить HTTPS на Drupal
Как настроить HTTPS для 1С-Битрикс
А еще в самой первой части этого цикла мы объясняли зачем вообще нужно настраивать ваш движок для работы по HTTPS:
Что такое смешанное содержимое (mixed content) и как его исправить
Настройка HTTPS для MODX Evolution
В панели управления сайтом, которая обычно находится по ссылке http://site.com/manager нужно перейти в раздел Инструменты — Конфигурация и на вкладке Сайт установить тип сервера https
Далее нужно изменить ссылку на основной адрес сайта (base href) в используемом шаблоне на https. Для этого в меню слева перейдите на вкладку Шаблоны, откройте нужный шаблон и перепишите строку, содержащую base href на такую:
<base href="https://site.com/">
После изменений очистите кеш через кнопку Сайт — Очистить кеш.
Возможно, у вас еще останутся ссылки по http на внешние ресурсы, такие как шрифты, которые нужно будет переписать вручную.
И последний шаг — добавляем перенаправление посетителей на HTTPS в начале файла .htaccess или после директивы RewriteEngine On:
RewriteEngine On #если еще не добавлено RewriteBase / #если еще не добавлено RewriteCond %{HTTPS} off RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Этот код для перенаправления на HTTPS наиболее универсальный и работающий в большинстве случаев. Иногда нужно использовать какой-либо другой вариант.
Настройка HTTPS для MODX Revolution
Для MODX Revolution настройка выглядит немного проще. Нужно перейти в панель управления сайтом http://site.com/manager в раздел Настройки — Системные настройки. В поиске по ключу напишите http. В найденных результатах нужно отредактировать параметр server_protocol — измените с http на https.
Далее, аналогично нужно изменить параметр link_tag_scheme — измените с -1 на 1.
Последний шаг — перенаправление на https. Вариант универсальных правил для перенаправления уже есть выше.
Если на MODX Revolution после выполнения указанных действий остался смешанный контент или другие проблемы, попробуйте такие варианты решения. В файле core/config/config.inc.php нужно найти строчку
$isSecureRequest = false;
и изменить на true:
$isSecureRequest = true;
Далее в строке
$url_scheme= $isSecureRequest? 'https://': 'http://';
поменять местами https и http:
$url_scheme= $isSecureRequest? 'http://': 'https://';
Или второй вариант, поменять эту строку на https:
$url_scheme= 'https://';
Если остались какие-либо вопросы по переходу на HTTPS — обращайтесь в техподдержку 24/7