2016-04-21 1 views
1

Dans Contao 3.5.9Contao: Comment puis-je changer le protocole de l'URL de base?

J'ai téléchargé sur un nouveau serveur et j'utilise un domaine différent de l'installation d'origine. J'utilise également https: //

Beaucoup de ressources nécessaires ne sont pas chargées car le système a l'URL de base définie à http: // Il utilise le nom de domaine correct dans l'URL de base, mais le mauvais protocole.

Je ne peux pas me connecter à l'administrateur.

J'ai cherché Google (pas grand-chose à propos de Contao) et trouvé ceci: http://blog.qzminski.com/article/move-the-contao-to-another-server.html

lecture, il semble que l'url de base est définie dans l'admin, ce qui signifie qu'il se trouve quelque part dans la db.

J'ai recherché le vidage de DB mais ne peux pas le trouver.

Comment puis-je changer le protocole de l'URL de base?

+0

Si vous accédez au site Web via 'https: //', la base href doit également contenir 'https: //', ainsi que tous les autres liens absolus pour ce domaine. Avez-vous effacé le cache interne et le cache de page après avoir déplacé l'installation vers un nouveau domaine? Avez-vous des modèles personnalisés qui utilisent des liens absolus sans https? – fritzmg

+0

Vous n'avez pas à spécifier le protocole, vous pouvez utiliser // à la place. Cela utilisera le même protocole de la page. Le problème est que mon URL de base est définie quelque part comme 'http: //'sub.domain.com et je veux le changer. –

Répondre

6

Contao utilise ce qui suit pour déterminer si la demande actuelle se fait via SSL ou non »\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); 
} 

Il est possible que votre environnement de serveur ne fixe pas non plus de ces $_SERVER globals. Cela peut être le cas si vous utilisez un proxy SSL par exemple.

Si tel est le cas pour vous, alors vous pouvez étendre la détection de SSL en insérant

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

dans votre /system/config/initconfig.php. Voir https://github.com/contao/core/issues/7542 par exemple (seulement allemand si).

+1

Intéressant. Je n'utilise pas Cloudflare, mais j'utilise les ELB AWS. Donc, je suppose que la solution est la même. –

+0

Oui, c'est pareil ici. Cependant, gardez à l'esprit que de telles connexions SSL ne sont pas vraiment cryptées de bout en bout. Seule la connexion entre vous (le client) et l'équilibreur de charge est cryptée dans ce cas. – fritzmg

+0

Comme je suis également hébergé sur AWS, donc pas trop embêté à ce sujet :-) –