Contao: Как я могу изменить протокол базового URL-адреса?

В Контао 3.5.9

Я загрузил на новый сервер и использую домен, отличный от исходной установки. Я также использую https://

Многие из необходимых ресурсов не загружаются, потому что в системе установлен базовый URL-адрес http://. Он использует правильное доменное имя в базовом URL-адресе, но неправильный протокол.

не могу войти в админку.

Я поискал в Google (о Contao там немного) и нашел это: http://blog.qzminski.com/article/move-the-contao-to-another-server.html

читая его, кажется, что базовый URL-адрес задан в админке, а значит, его можно найти где-то в БД.

Я ищу дамп БД, но не могу его найти.

Как я могу изменить протокол базового URL-адреса?


person Jez D    schedule 21.04.2016    source источник
comment
Если вы заходите на сайт через https://, то базовый href также должен содержать https://, а также любые другие абсолютные ссылки для этого домена. Вы очищали внутренний кеш и кеш страниц после переноса установки на новый домен? Возможно, у вас есть какие-нибудь пользовательские шаблоны, которые используют абсолютные ссылки без https?   -  person fritzmg    schedule 21.04.2016
comment
Вам не нужно указывать протокол, вместо этого вы можете использовать //. Это будет использовать тот же протокол страницы. Проблема в том, что мой базовый URL-адрес установлен где-то как http://sub.domain.com, и я хочу его изменить.   -  person Jez D    schedule 21.04.2016


Ответы (1)


Contao использует следующее, чтобы определить, выполняется ли текущий запрос через SSL или нет » \Environment::get('ssl'):

/**
 * Return true if the current page was requested via an SSL connection
 *
 * @return boolean True if SSL is enabled
 */
protected static function ssl()
{
    return ($_SERVER['SSL_SESSION_ID'] || $_SERVER['HTTPS'] == 'on' || $_SERVER['HTTPS'] == 1);
}

Возможно, ваша серверная среда не устанавливает ни один из этих $_SERVER глобальных параметров. Например, это может иметь место, если вы используете прокси-сервер SSL.

Если это ваш случай, вы можете расширить обнаружение SSL, вставив

if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && 'https' === $_SERVER['HTTP_X_FORWARDED_PROTO']) 
{
    $_SERVER['HTTPS'] = 1;
}

в свой /system/config/initconfig.php. См., например, https://github.com/contao/core/issues/7542. (правда, только немецкий).

person fritzmg    schedule 22.04.2016
comment
Интересно. Я не использую Cloudflare, но использую AWS ELB. Так что, я думаю, решение то же самое. - person Jez D; 25.04.2016
comment
Ага, там то же самое. Однако имейте в виду, что любые такие SSL-соединения не являются полностью зашифрованными. В этом случае шифруется только соединение между вами (клиентом) и балансировщиком нагрузки. - person fritzmg; 25.04.2016
comment
Так как я также размещаюсь на AWS, так что не слишком беспокойтесь об этом :-) - person Jez D; 27.04.2016