2016-04-21 2 views
1

In Contao 3.5.9Contao: Как я могу изменить протокол базового url?

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

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

Я не могу войти в систему администратора.

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

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

У меня есть поиск дампа DB, но не могу найти его.

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

+0

Если вы получаете доступ к сайту через 'https: //', то базовый href должен также содержать 'https: //', а также любые другие абсолютные ссылки для этого домена. Удалили ли вы внутренний кеш и кеш страниц после переноса установки в новый домен? Возможно, у вас есть пользовательские шаблоны, которые используют абсолютные ссылки без 'https'? – fritzmg

+0

Вам не нужно указывать протокол, вы можете использовать // вместо этого. Это будет использовать тот же протокол на странице. Проблема в том, что мой базовый url установлен где-то как 'http: //'sub.domain.com, и я хочу его изменить. –

ответ

6

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 (только немецкий).

+1

Интересно. Я не использую Cloudflare, но использую AWS ELB. Итак, я думаю, что решение такое же. –

+0

Да, это то же самое. Однако имейте в виду, что любые такие SSL-соединения не являются подлинными сквозными зашифрованными. В этом случае зашифровывается только соединение между вами (клиентом) и балансиром нагрузки. – fritzmg

+0

Поскольку я также хостинг на AWS, так что не слишком суетился об этом :-) –