Не так давно у меня была статья: Перевод 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: редирект с 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: как его найти и исправить
Если у кого то что то не получается, задавайте вопросы в комментариях, помогу чем смогу!
на новой версии modx в настройках нет Тип сервера чтобы поменять на https что делать
Добрый день!
Был установлен новый сертификат, после чего перестал работать файловый менеджер, не могу загрузить фото или видео на сайт, в окне загрузки просто белое полотно.
Хостер мне прислал:
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, все настройки произвел, везде кэш почистил, но ничего не меняется… Мучаю хостера вопросами, но пока ответа вразумительного нет.
Что делать?
В папке manager есть файл ht.access, переименуйте его в .htaccess. Удалите tinyMCE и установите за место него tinyMCE RTE. Обновите движек или просто инициализируйте установку (обновление)
А не подскажите, почему после переезда на другой хостинг все внутренние страницы выдают ошибку 404? База перетащена, кэш очищен. Главная страница отображается.
А если отключить ЧПУ, то все нормально
Может не включен PHP модуль mod_rewrite
Разобрался. В корень засунул .htaccess из оригинального дистрибутива и все пошло. Алексей, спасибо за ответ
Пожалуйста)
Добрый день.
Сделал всё, как в статье. Страницы все внутренние сработали на https, а главная не до конца — в адресной строке значок замка появился, но замок открытый (на всех внутренних замок закрытый). При наведении на открытый замок появляется надпись: «»Соединение защищено, однако «Let`s Encrypt Autority X3″ может иметь доступ к данным»
Добрый день. Напишите адрес сайта посмотрю — может смешанный контент. и в каком браузере так пишет?
Алексей, https://devore-st.ru/
В Яндекс.Браузер
90% что смешанный контент http://prntscr.com/rm28bw
В общем была проблема. Сайт начал открываться через https, часть страниц по прежнему открывалась через http ( те страницы которые открывались через http отображались криво)
Сделал всё с точностью как написано, теперь сайт открывается через http (мда)
и те страницы которые через https теперь криво )
В общем поменялось все наоборот
help
Есть еще смешанный контент, вот статью почитайте https://web-revenue.ru/wordpress/smeshannoe-soderzhimoe-https-kak-ego-nayti-i-ispravit
Привет! Я пытаюсь настроить https на modx на open server, вроде все сработало, только хром не хочет открывать сайт, пишет «Операционная система компьютера не доверяет его сертификату безопасности». Нажимаю «все равно перейти», но все равно не переходит. Нужно ли мне для open server делать процедуру, описанную здесь ziscod.com/ssl-sertifikat-v-openserver/
Убрала редирект, все норм
Правильно сделали, так как это нужно делать на сайте размещенном на хостинге
Привет. Зачем вам https на локальном сервере? Обычно ssl получают (или покупают) на хостинге а потом уже настраивают сайт. А так да скорее всего нужно воспользоватся инструкцией с ziscod (но я таким не занимался — так как не понятно зачем)
Просто учусь)