MODX https, как настроить самостоятельно

modx https настройка MODX Revo

Не так давно у меня была статья: Перевод 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: редирект с http на https

Здесь нам нужно зайти в файловый менеджер хостинга или подключиться к хостингу по FTP/SFTP, перейти в корень сайта, найти файл .htaccess, открыть его и добавить в него следующие строки (или раскомментировать имеющиеся, убрав #)

Рекомендую сделать копию .htaccess, перед внесением правок, на всякий случай.

#RewriteCond %{HTTPS} !=on [OR]
#RewriteCond %{SERVER_PORT} !^443
#RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Вот пример рабочего .htaccess файла сайта (в нем также правила для склейки домена с www и без www), работающего на хостинге бегет.

RewriteEngine On
RewriteBase /

# Prevent rewrite the .well-known directory used by LetsEncrypt by rules below of this rule
RewriteRule "^\.well-known/" - [L]

# Prevent dot directories (hidden directories like .git) to be exposed to the public
# Except for the .well-known directory used by LetsEncrypt a.o
RewriteRule "/\.|^\.(?!well-known/)" - [F]

# Rewrite www.example.com -> example.com -- used with SEO Strict URLs plugin
RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} ^www.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

# Force rewrite to https for every host
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{SERVER_PORT} !^443
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# The Friendly URLs part
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

Здесь включен ЧПУ, редирект с www домена на без www и редирект с http на https. Для тех у кого после перевода разваливается админка, попробуйте внести еще следующие правила:

# Redirect the manager to a specific domain - don't rename the ht.access file
# in the manager folder to use this this rule
RewriteCond %{HTTP_HOST} !^example\.com$ [NC]
RewriteCond %{REQUEST_URI} ^/manager [NC]
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]

Не забудьте заменить example.com на свой домен.

Если выше приведенные правила не работают, попробуйте следующие.

Вариант 2.

RewriteEngine On
RewriteCond %{HTTPS} =off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]

Вариант 3.

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Вариант 4.

RewriteEngine On 
RewriteCond %{ENV:HTTPS} !on 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Вариант 5.

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

Вариант 6 — для тех у кого хостинг на nginx (без апач), типа modhost

server {
    listen 80 default_server;
    server_name _;
    return 301 https://$host$request_uri;
}

Редирект вносится в файл конфигурации Nginx (.htacess файлы не работают — они для apach).

Дополнительно у кого проблемы в тегом base

Часто после перехода, бывают проблемы с тегом base: он все равно выводит путь с http. В таком случае попробуйте внести правки в файл core/config/config.inc.php

if (!defined('MODX_URL_SCHEME')) {
$url_scheme=  $isSecureRequest ? 'https://' : 'http://'; 
//заменить на:
if (!defined('MODX_URL_SCHEME')) {
$url_scheme=  'https://';

После этого не забудьте очистить кэш. Если проблема сохраняется тогда пропишите его в ручную: .

Сопутствующие статьи: Проверка правильности установки SSL и Смешанное содержимое HTTPS: как его найти и исправить

Если у кого то что то не получается, задавайте вопросы в комментариях, помогу чем смогу!

Поделиться с друзьями
Алексей

Веб-дизайнер и SEO оптимизатор. Занимаюсь созданием сайтов с 2010 года и их продвижение с 2012 года!

Оцените автора
( 5 оценок, среднее 4 из 5 )
Web-Revenue.ru
Добавить комментарий

  1. Аноним

    на новой версии modx в настройках нет Тип сервера чтобы поменять на https что делать

    Ответить
  2. Роман

    Добрый день!
    Был установлен новый сертификат, после чего перестал работать файловый менеджер, не могу загрузить фото или видео на сайт, в окне загрузки просто белое полотно.
    Хостер мне прислал:
    Mixed Content: The page at ‘ ‘ was loaded over HTTPS, but requested an insecure frame ‘ ‘. This request has been blocked; the content must be served over HTTPS.
    И посоветовал обновить систему или tinyMCE. Но и тут вкрячился, при установке и переустановке опять пустое окно и все.
    Я так понимаю половина сайта работает на http, все настройки произвел, везде кэш почистил, но ничего не меняется… Мучаю хостера вопросами, но пока ответа вразумительного нет.
    Что делать?

    Ответить
    1. Алексей автор

      В папке manager есть файл ht.access, переименуйте его в .htaccess. Удалите tinyMCE и установите за место него tinyMCE RTE. Обновите движек или просто инициализируйте установку (обновление)

      Ответить
  3. Антон

    А не подскажите, почему после переезда на другой хостинг все внутренние страницы выдают ошибку 404? База перетащена, кэш очищен. Главная страница отображается.

    Ответить
    1. Антон

      А если отключить ЧПУ, то все нормально

      Ответить
      1. Алексей автор

        Может не включен PHP модуль mod_rewrite

        Ответить
      2. Антон

        Разобрался. В корень засунул .htaccess из оригинального дистрибутива и все пошло. Алексей, спасибо за ответ

        Ответить
        1. Алексей автор

          Пожалуйста)

          Ответить
  4. Дмитрий

    Добрый день.
    Сделал всё, как в статье. Страницы все внутренние сработали на https, а главная не до конца — в адресной строке значок замка появился, но замок открытый (на всех внутренних замок закрытый). При наведении на открытый замок появляется надпись: «»Соединение защищено, однако «Let`s Encrypt Autority X3″ может иметь доступ к данным»

    Ответить
    1. Алексей автор

      Добрый день. Напишите адрес сайта посмотрю — может смешанный контент. и в каком браузере так пишет?

      Ответить
      1. Дмитрий

        Алексей, https://devore-st.ru/
        В Яндекс.Браузер

        Ответить
        1. Алексей автор

          90% что смешанный контент http://prntscr.com/rm28bw

          Ответить
  5. Сергей

    В общем была проблема. Сайт начал открываться через https, часть страниц по прежнему открывалась через http ( те страницы которые открывались через http отображались криво)

    Сделал всё с точностью как написано, теперь сайт открывается через http (мда)
    и те страницы которые через https теперь криво )
    В общем поменялось все наоборот

    help

    Ответить
    1. Алексей автор

      Есть еще смешанный контент, вот статью почитайте https://web-revenue.ru/wordpress/smeshannoe-soderzhimoe-https-kak-ego-nayti-i-ispravit

      Ответить
  6. Лиза

    Привет! Я пытаюсь настроить https на modx на open server, вроде все сработало, только хром не хочет открывать сайт, пишет «Операционная система компьютера не доверяет его сертификату безопасности». Нажимаю «все равно перейти», но все равно не переходит. Нужно ли мне для open server делать процедуру, описанную здесь ziscod.com/ssl-sertifikat-v-openserver/

    Ответить
    1. Лиза

      Убрала редирект, все норм

      Ответить
      1. Алексей автор

        Правильно сделали, так как это нужно делать на сайте размещенном на хостинге

        Ответить
    2. Алексей автор

      Привет. Зачем вам https на локальном сервере? Обычно ssl получают (или покупают) на хостинге а потом уже настраивают сайт. А так да скорее всего нужно воспользоватся инструкцией с ziscod (но я таким не занимался — так как не понятно зачем)

      Ответить
      1. Лиза

        Просто учусь)

        Ответить