<?php
/**
* Redirection vers la racine du site Web
*
* Ce fichier se charge de la redirection vers la racine du site au cas où la racine du serveur Web ne correspond pas au répertoire www/ d'Utopia. Il est cependant fortement recommandé de ne placer que le répertoire www/ dans l'arborescence Web, pour plus de sécurité.
* @package Utopia
*/
// La norme HTTP/1.1 (RFC 2616) {@link http://www.faqs.org/rfcs/rfc2616} précise que l'URI en argument de Location doit être absolue, même si l'URI relative fonctionne dans la plupart des cas (pas de problème avec Internet Explorer ou Gecko).
// Portion de code extraite de kernel.php, pour la détection de l'URL absolue du site.
if (!empty($_SERVER['HTTP_SCHEME']))
$scheme = $_SERVER['HTTP_SCHEME'];
elseif (!empty($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) != 'off')
$scheme = 'https';
else
// Simple supposition, mais c'est ce qu'il y a de plus probable.
$scheme = 'http';
$siteURL = $scheme.'://';
if (!empty($_SERVER['HTTP_HOST'])) {
$siteURL.= $_SERVER['HTTP_HOST'];
if (isset($_SERVER['SERVER_PORT']) && !($scheme == 'http' && $_SERVER['SERVER_PORT'] == 80) && !($scheme == 'https' && $_SERVER['SERVER_PORT'] == 443))
$siteURL.= ':'.$_SERVER['SERVER_PORT'];
unset($scheme);
}
else
// Si on a pas le HTTP_HOST, on essai avec une URL "semi" relative (commençant par /).
$siteURL = '';
// REQUEST_URI contient également le query, qui peut contenir "/" et demanderait donc un traitement supplémentaire avant d'être passé en argument de dirname().
if (isset($_SERVER['SCRIPT_NAME']))
$siteURL.= dirname($_SERVER['SCRIPT_NAME']);
elseif (isset($_SERVER['PHP_SELF']))
$siteURL.= dirname($_SERVER['PHP_SELF']);
if (substr($siteURL, -1) != '/')
$siteURL.= '/';
$siteURL.= 'www/';
if (!empty($_SERVER['QUERY_STRING']))
$siteURL.= '?'.$_SERVER['QUERY_STRING'];
header('HTTP/1.1 301 Moved Permanently');
header('Status: 301 Moved Permanently');
header('Location: '.$siteURL); unset($siteURL);
exit;
?>