Skip to content

Instantly share code, notes, and snippets.

@alexsoin
Created February 24, 2019 19:56
Show Gist options
  • Save alexsoin/cb4530754982d85723b5def688b9de6a to your computer and use it in GitHub Desktop.
Save alexsoin/cb4530754982d85723b5def688b9de6a to your computer and use it in GitHub Desktop.
modx http -> https
# Rewrite www.domain.com -> domain.com -- used with SEO Strict URLs plugin
RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} ^www.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
#Включение https
#RewriteEngine On
#RewriteCond %{SERVER_PORT} !^443$
#RewriteCond %{HTTPS} off
#RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
#Включение https вариант 2
# RewriteEngine on
SetEnvIf X-Forwarded-Proto https SERVER_PORT=443
SetEnvIf X-Forwarded-Proto https HTTPS=on
RewriteCond %{HTTP:HTTPS} !=on [NC]
RewriteRule ^(.*)$ https://site.ru/$1 [R=301,L]

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

  • В «Системных настройках» сайта (раздел «Система и сервер») изменить значение «Тип сервера» (ключ под названием server_protocol) на https.
  • В «Системных настройках» сайта (раздел «Сайт») изменить значение «Схема URL» (ключ под названием link_tag_scheme) на 1. Настроить автоматическое перенаправление с 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')
    );
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment