diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php index 70fb0705c8ca3829e2f916c49483ff9c0332e59f..98f778f167568cdac06880ce7e2a3b85e6e274df 100644 --- a/ecrire/inc/utils.php +++ b/ecrire/inc/utils.php @@ -1524,8 +1524,9 @@ function test_valeur_serveur($truc) { /** * Calcule l'url de base du site * - * Calcule l'URL de base du site, sans se fier à la méta (adresse_site) qui - * peut être fausse (sites avec plusieurs noms d’hôtes, déplacements, erreurs) + * Calcule l'URL de base du site, en priorité sans se fier à la méta (adresse_site) qui + * peut être fausse (sites avec plusieurs noms d’hôtes, déplacements, erreurs). + * En dernier recours, lorsqu'on ne trouve rien, on utilise adresse_site comme fallback. * * @note * La globale `$profondeur_url` doit être initialisée de manière à @@ -1561,8 +1562,16 @@ function url_de_base($profondeur = null) { $host = strtr($_SERVER['HTTP_X_FORWARDED_HOST'], "<>?\"' \r\n", '________'); } else { - # note : HTTP_HOST contient le :port si necessaire + // note : HTTP_HOST contient le :port si necessaire $host = $_SERVER['HTTP_HOST']; + // si on n'a pas trouvé d'hôte du tout, en dernier recours on utilise adresse_site comme fallback + if (is_null($host) and isset($GLOBALS['meta']['adresse_site'])) { + $host = $GLOBALS['meta']['adresse_site']; + if ($scheme = parse_url($host, PHP_URL_SCHEME)) { + $http = $scheme; + $host = str_replace("{$scheme}://", '', $host); + } + } if (isset($_SERVER['SERVER_PORT']) AND $port=$_SERVER['SERVER_PORT'] AND strpos($host,":")==false){