Pour Apache:
'http'.(empty($_SERVER['HTTPS'])?'':'s').'://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']
Vous pouvez également utiliser HTTP_HOST
au lieu de SERVER_NAME
comme Herman commenté. Voir cette question pour un examen complet. En bref, vous êtes probablement OK avec l'aide non plus. Ici est "l'hôte" de la version:
'http'.(empty($_SERVER['HTTPS'])?'':'s').'://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']
Pour les Paranoïaques / Pourquoi c'est important
Généralement, j'ai mis en ServerName
dans la VirtualHost
parce que je veux qu' à l' canonique formulaire du site. L' $_SERVER['HTTP_HOST']
est basée sur les en-têtes de requête. Si le serveur répond à toutes/tous les noms de domaine à l'adresse IP, l'utilisateur pourrait usurper l'en-tête, ou pire, quelqu'un pourrait point un enregistrement DNS pour que votre adresse IP, puis sur votre serveur / site web serait de servir un site web avec des liens dynamiques construit sur une URL incorrecte. Si vous utilisez la méthode de ce dernier, vous devez également configurer votre vhost
ou de configurer un .htaccess
règle à respecter le domaine que vous voulez servir, quelque chose comme:
RewriteEngine On
RewriteCond %{HTTP_HOST} !(^stackoverflow.com*)$
RewriteRule (.*) http://stackoverflow.com/$1 [R=301,L]
#sometimes u may need to omit this slash ^ depending on your server
Espérons que cela aide. Le point réel de cette réponse, c'était juste pour donner la première ligne de code pour ces gens qui fini ici lors de la recherche d'un moyen de récupérer l'URL complète avec apache :)