Comment mettre en œuvre les Url absolues sur localhost et le serveur web?
J'ai toujours utilisé le suivant lier la pratique, de les Url relatives avec une URL absolue chemin:
<a href="/relative/path/to/document.html">
Mais je vais mettre en œuvre Url absolues:
<a href="http://example.com/relative/path/to/document.html">
Ce n'est pas un problème pour moi de les changer (automatisé rechercher & remplacer dans les documents HTML).
Mais quelle est la meilleure pratique pour s'assurer qu'il fonctionnera sur mon localhost (qui prend en charge le PHP), ainsi que sur le web? Et pourquoi?
Par exemple, voici comment je le fais en PHP comprend:
<?php include($_SERVER['DOCUMENT_ROOT']."/relative/path/to/document.html"); ?>
Adopter la même approche pour href
Url? Est un autre PHP technique mieux? Curieux de savoir pourquoi.
Mon conseil serait de créer plusieurs hôtes virtuels sur votre ordinateur local, par exemple
Avez-vous essayé
À partir de ce que je me souviens,
local.example.org
et de modifier votre fichier hosts afin de les faire résoudre est localhost.Avez-vous essayé
$_SERVER['SERVER_NAME']
ou $_SERVER['HTTP_HOST']
?À partir de ce que je me souviens,
HTTP_HOST
n'est pas vraiment fait pour ça?OriginalL'auteur Baumr | 2013-01-17
Vous devez vous connecter pour publier un commentaire.
Vous pouvez simplement inclure une constante prédéfinie ou une variable dans le code HTML hrefs.
par exemple
Merci. Est
define
et puisecho
préféré surinclude
etDOCUMENT_ROOT
? Pourquoi?charge un fichier dans le fichier PHP. Il n'a rien à voir avec l'URI de votre site.
désolé, ignorer cette partie — je ne voulais pas l'inclure. Sont les deux anciens préférables à l'utilisation de
$_SERVER['DOCUMENT_ROOT'].
, et pourquoi?OriginalL'auteur hammus
Garder la même structure de répertoire local et sur le web hôte, et l'utilisation d'Uri relatifs et les chemins d'accès chaque fois que possible.
Si vous devez utiliser un URI absolu, de la définir une fois quelque part et utiliser la constante chaque fois que vous besoin à la sortie d'un URI pour éviter d'avoir à faire les modifications à l'aide rechercher et remplacer.
C'est plus facile si vous avez un fichier de configuration ou de quelque autre fichier inclus où vous ne définir qu'une seule fois.
Est ROOT_URI et puis echo préférés comprennent et DOCUMENT_ROOT? Pourquoi? Merci
DOCUMENT_ROOT
agit d'un chemin d'accès au fichier, ce qui est bien pour votreinclude
relevé, mais pas pour la génération d'une réelle URI. Voir stackoverflow.com/questions/7868652/serverdocument-root. Aussi, j'ai tout juste d'être nommé à la constante deROOT_URI
dans mon exemple, vous pouvez nommer comme vous le souhaitez (par exemple dans une autre réponse de la constante a été nomméHOST
).OriginalL'auteur rink.attendant.6
Que tout dépend de la façon dont vous prévoyez sur l'hébergement du contenu. PHP n'est pas un mauvais choix car il existe un grand nombre de sociétés d'hébergement qui charge le PHP. Sans un langage de script comme PHP, votre meilleur pari serait de javascript, mais en fonction de pourquoi vous essayez de faire de l'URL absolue, qui peut aller à l'encontre de votre objectif.
Une chose que je suggère, c'est de faire un fichier de configuration que vous peut ou peut ne pas être en mesure de compter sur $_SERVER['DOCUMENT_ROOT'].
Dire: config.php
Alors tous les fichiers dont il a besoin, mettre ceci en haut
Pourquoi ne puis-je pas dépendre DOCUMENT_ROOT?
Si le serveur web n'est pas apache, les variables d'environnement peuvent ne pas être les mêmes. Peut-être que PHP comptes, mais je ne pense pas qu'il a utilisé pour.
Ah, dans ce cas, il est Apache
OriginalL'auteur ymmyk
Au lieu de cela, vous pouvez ajouter en dessous de la ligne de votre balise head. Maintenant, vous pouvez donner toutes les url par rapport à la racine de votre. Maintenant, lorsque vous téléchargez vers le serveur ou le travail sur le localhost. Il suffit de changer l'url ici.
base
élément, alors qu'elle ne fonctionne pas avec IE8OriginalL'auteur Jain Shubham
Voici une solution qui fonctionne à la fois sur la télécommande et les serveurs locaux et ne nécessite pas de changer le nom de domaine:
Avec ces 2 lignes, vous n'aurez pas besoin de modifier le code, si vous changez votre nom de domaine et aussi, vous n'aurez pas besoin de le changer si vous basculez entre HTTP et HTTPS. N'hésitez pas à changer les noms de variables que vous le souhaitez.
Alors votre code pour les liens ressemblerait à quelque chose comme ceci:
MISE À JOUR IMPORTANTE CONCERNANT LA SÉCURITÉ:
Il y a cependant un risque de sécurité avec cette solution. Voici un article sur elle.
- À utiliser avec prudence ou mieux éviter de l'utiliser.
Voici une façon de faire face à de multiples environnements de l'article lié:
Vous pouvez également en faire un peu plus court:
OriginalL'auteur Dmitriy Gamolin