2010-07-14 8 views
3

Dans mon script php, j'ai créé une variable constante qui définit l'URL de base à mettre dans mes hyperliens, mais en ai-je vraiment besoin?Lien hypertexte de démarrage?

Voici un exemple de ce que je veux dire.

J'ai ceci:

// base url is only defined once and reused throughout 
define("__BASE_URL","http://localhost/test1/"); 
print '<a href="'.__BASE_URL.'index.php?var1=open/>Open</a>'; 

(j'ai beaucoup de ces répandre dans mon script.)

J'ai essayé et il fonctionne:

print '<a href="index.php?var1=open/>Open</a>'; 

Alors où est le la bonne façon de le faire? J'ai remarqué que la deuxième façon fonctionne même sur le chargement d'images, de css et de fichiers javascript.

Répondre

1

Cela dépend. Sans le __BASE_URL, votre lien sera relatif au document en cours. Dans votre cas, cela signifie que index.php doit être dans le même répertoire que le fichier qui contient le lien index.php.

Si vous avez __BASE_URL, le lien fonctionnera quel que soit l'emplacement de son fichier conteneur (il ne doit pas nécessairement se trouver dans le même répertoire que index.php).

Une autre option est d'utiliser une seule barre de départ. Ensuite, votre lien sera par rapport à la racine de votre domaine:

print '<a href="/index.php?var1=open/>Open</a>'; 

En d'autres termes, le lien ci-dessus indiquerait http://localhost/index.php.

0

Il semble que votre question concerne absolue vs URL relatives. Allez-vous pour la portabilité? Il est généralement préférable d'utiliser des URL relatives, en particulier si vous envisagez de travailler dans un environnement de test, puis de transférer ultérieurement les fichiers en production.

3

Il vient vraiment à la façon dont vous structurez votre site. Les URL relatives sont excellentes (en faisant href="index.php" vous dites vraiment href="./index.php"), mais elles peuvent commencer à devenir désordonnées lorsque vous commencez à étaler des pages sur plusieurs répertoires.

Personnellement, j'aime baser toutes mes URL relatives hors du répertoire racine, ce qui signifie que commencer par une barre oblique («/») toutes mes URL. Cela n'a pas d'importance si mon script est dans/ou/admin, car j'ai toujours un point de référence constant - la racine du document - par opposition à un répertoire relatif dans la structure. Votre premier exemple, le stockage des chemins de document dans les variables, commence vraiment à être utile lorsque vous commencez à développer des systèmes plus importants dans lesquels vous voulez que les chemins soient configurables. Par exemple, vous voulez peut-être que vos administrateurs système puissent définir l'origine des images ou l'emplacement des téléchargements mis en cache.

Alors, vraiment tenir compte de votre cas d'utilisation et la taille de votre système. Gardez également à l'esprit que si vous déplacez le script vers un autre serveur, vos URL et structures de répertoires peuvent changer, ce qui peut provoquer des dégâts (par exemple, votre script peut être déplacé vers un sous-domaine différent, dans la racine du document , etc.). Beaucoup de gens vont tomber dans mod_rewrite d'Apache dans ce cas.