J'ai un site Joomla que je termine et charge maintenant sur le serveur qui hébergera le site en direct. Je reçois maintenant l'erreur suivante dans la console javascript:
Contenu mixte: la page " https://mydomain.com " a été chargée via HTTPS, mais a demandé une feuille de style non sécurisée.
Une vue source révèle
<base href="http://mydomain.com"
Cette valeur href semble être définie dans /libraries/joomla/document/renderer/html/head.php , qui appelle
$document->getBase()
pour obtenir cette valeur. Dans /libraries/joomla/document/document.php , cette valeur est définie avec un $options
tableau transmis au constructeur, mais je ne trouve pas où ces options sont définies.
J'avais pensé à cette valeur, ainsi qu'aux constantes JPATH_BASE
, JPATH_ROOT
, JPATH_SITE
, etc., seraient attribués quel que soit le protocole utilisé par le site. Me manque-t-il un paramètre quelque part à l'arrière du site?
J'utilise Joomla 3.7.2
C'est donc la valeur de base href qui pose problème. Commenter la tâche dans /libraries/joomla/document/renderer/html/head.php
fera l'affaire.
// Generate base tag (need to happen early)
/*
$base = $document->getBase();
if (!empty($base))
{
$buffer .= $tab . '<base href="' . $base . '" />' . $lnEnd;
}
*/
Cependant, il serait préférable de résoudre le problème de l'attribution de la valeur correcte. J'ai trouvé une meilleure solution sur StackOverflow ici:
https://stackoverflow.com/questions/19733229/joomla-base-href-uses-http-instead-of-https
La réponse acceptée à cette question nous dit "il y a des serveurs où $_SERVER['HTTPS']
n'est évidemment pas initialisé. "La vraie solution consiste donc à réparer le fichier .htaccess ou, comme je l'ai fait, le fichier httpd.conf en ajoutant les éléments suivants:
<IfModule mod_env.c>
SetEnv HTTPS on
</IfModule>
Je suppose que j'aurais pu continuer à chercher avant de poser ma question ici, mais en postant la réponse, je pourrais peut-être sauver à quelqu'un d'autre les heures que j'ai passées hier sur ce problème.