Настройка MODX на работу с HTTPS

HTTPS для MODX Revolution

О важности и нужности перехода на безопасный протокол HTTPS говорится много и часто. Наша же с вами задача – перевести на HTTPS сайт, разработанный в CMS MODX Revolution.

Сложностей при имеющемся и установленном сертификате SSL возникнуть не должно.

 

 

Процедура настройки

  1. В «Системных настройках» сайта (раздел «Система и сервер») изменить значение «Тип сервера» (ключ под названием server_protocol) на https.
  2. В «Системных настройках» сайта (раздел «Сайт») изменить значение «Схема URL» (ключ под названием link_tag_scheme) на 1.
  3. Настроить автоматическое перенаправление с http на https, чтобы сайт был доступен только по одному, безопасному протоколу.

По третьему пункту есть несколько дополнений:

Если на вашем веб-сервере испольуется apache, нужно добавить в файл .htaccess следующие строчки, заменив site.ru на адрес вашего ресурса:


RewriteCond %{SERVER_PORT} !^443$>
RewriteRule ^(.*)$ https://site.ru/$1 [R=301,L]

Если на вашем веб-сервере испольуется nginx, в конфигурационный файл нужно добавить следующие строчки:


if ($scheme = 'http') {
	return	301  https://$host/;
}

Если не желаете редактировать файлы, можно воспользоваться плагином от Ильи Уткина, активировав его на событие: OnHandleRequest:


<?php
if ($modx->event->name != "OnHandleRequest") {return;}

$uri = $_SERVER['REQUEST_URI'];
if ($uri == '/robots.txt') return;
$url = $_SERVER['HTTP_HOST'];
$site_url = 'site.ru'; // заменить на свой домен
if ($url != $site_url || !$_SERVER['HTTPS']) {
    $modx->sendRedirect('https://'.$site_url.$uri, array(
        'responseCode' => 'HTTP/1.1 301 Moved Permanently')
    );
}

 

 

Обратите внимание!

При наличии абсолютных внутренних ссылок обязательно произведите их замену на относительные, чтобы избежать появления предупреждений о смешанном содержимом (если страница, переданная по протоколу https, содержит какой либо контент, передаваемый по протоколу http, то соединение считается частично зашифрованным и, значит, уже НЕ ЗАЩИЩЕННЫМ).


Ненавязчивая благодарность проекту