Https modx – Разработка сайтов на MODX, система управления сайтами MODX, создание сайтов на MODX

Перевод 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

меняем в настройках modx тип сервера

Настройки .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/">

modx evo https

После изменений очистите кеш через кнопку Сайт — Очистить кеш.

modx evo https

Возможно, у вас еще останутся ссылки по 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.

modx evo https

Последний шаг — перенаправление на 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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *