Не работает https перенаправление в админке Решено

Дополнение: modx

Здравствуйте в файле .htaccess раскомментировал 2 строки:

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

Сайт и вход в админку корректно работает по https (http://joxi.ru/xAeeyPafdvBJAy), но как только вхожу в админку она ломается joxi.ru/l2ZVK0DHqY3N2J
а вот если добавлю букву s в http, то админка будет корректно работать.

Подскажите, как решить эту проблему, что бы автоматом в админке перебрасывалось на защищенный протокол https?
13 марта 2017, 08:40    Alex Lenk   G+  
2    218 0

Комментарии (6)

  1. Илья Уткин 13 марта 2017, 10:30 # +1
    Создай вот такой плагин на событие OnHandleRequest

    if ($modx->event->name != "OnHandleRequest") {
       return;
    }
    $uri = $_SERVER['REQUEST_URI'];
    $http_host = $_SERVER['HTTP_HOST'];
    $site_url = str_replace(array('www.', 'http://', 'https://', '/'), '', $modx->getOption('site_url'));
    // for https set true
    $https = true;
    // robots.txt allways without redirect
    if ($uri == '/robots.txt') return;
    if ($http_host != $site_url || ($https && !$_SERVER['HTTPS'])) {
        if ($https) {
            $protocol = 'https://';
        } else {
            $protocol = 'http://';
        }
        $modx->sendRedirect($protocol.$site_url.$uri, array('responseCode' => 'HTTP/1.1 301 Moved Permanently'));
    }
    1. Николай 13 марта 2017, 10:54 # +1
      А не проще ли и корректнее в папке с админкой переставить точку в htaccess и в нем добавить правило:

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

      ?

      Там сейчас скорее всего rewrite off стоит. Ну или заходить по https
      1. Илья Уткин 13 марта 2017, 10:57 # +2
        Может и проще… Только не люблю я вносить изменения в .htaccess (вдруг, в будущем, потребуется перенести на сервер без Apache — тогда будет больше возни).
      2. Alex Lenk 13 марта 2017, 22:16 # 0
        Спасибо большое, работает!
      3. Алексей Федоров 13 марта 2017, 11:45 # 0
        На всякий случай стоит проверить системную настройку server_protocol в core -> система и сервер. Там нужно поставить https. По идее, больше никакого шаманства для админки не потребуется. Разве что uri перегенерировать после изменений
        1. Alex Lenk 13 марта 2017, 22:12 # 0
          это давно сделал, вообще ничего не происходило. Даже кеш сбрасывал.
        Вы должны авторизоваться, чтобы оставлять комментарии.