#1 Le 01/10/2008, à 15:13
- poupougnac
En finir avec les chemins relatifs et absolus!
Suite à un changement de nom de domaine, j'ai perdu beaucoup de temps à redéfinir mes chemins dans le code car mes chemins étaient tous absolus!
Il est généralement forcé de choisir une des deux solutions selon les avantages/inconvénients:
Relatif: permet de changer de nom de domaine sans affecter les chemins mais le chemin n'est pas le même quand on change de répertoire dans l'arborescence...
Absolu: quelque soit l'endroit l'appel se fait toujours correctement... Changement de nom de domaine avec modification du code.
La petite astuce du jour pour ne pas avoir à faire ces choix:
Créez un dossier à la racine de votre serveur web ex: ap (absolut path)
Pour accéder à la racine vous faites dans les codes: /ap/../lerépertoirequevousvoulez
On a un mix entre le chemin relatif et absolue et on peut changer le nom de domaine sans conséquence et sans modif à faire, on peut également accèder aux fichiers où que l'on soit dans l'arborescence.
C'est une petite astuce pas compliqué mais qu'il fallait trouver. (D'ailleurs c'est tellement simple que ça a déjà dû être trouvé)
Dernière modification par poupougnac (Le 01/10/2008, à 15:14)
Hors ligne
#2 Le 01/10/2008, à 17:49
- BorX
Re : En finir avec les chemins relatifs et absolus!
Ca a l'air intéressant (chemin relatif ou absolu, c'est effectivement un grand débat)...
Mais je ne comprends pas ton astuce...
Je ne vois pas la différence entre
/ap/../lerépertoirequevousvoulez
et
/lerépertoirequevousvoulez
Et je ne vois pas le rapport entre le nom de domaine et le chemin...
Dans quel contexte ? Dans de la programmation web (php ? javascript ?) ?
Qu'est-ce que tu entends par nom de domaine ? Quelle est la conséquence de sa modification sur les chemins ?
Dernière modification par BorX (Le 01/10/2008, à 17:50)
Hors ligne
#3 Le 01/10/2008, à 20:50
- poupougnac
Re : En finir avec les chemins relatifs et absolus!
Salut BorX
bon écoute je me sens un peu bête, j'ai pensé qu'accéder directement par le / posait un problème et je n'avais pas vidé le cache du navigateur avant de vérifier... Et quand j'ai tenté une magouille en faisant ça /ap/../ ça marchait... lol no comment
Je parle effectivement de la technologie web en générale (php html javascript css)
Donc ça ne change rien, je ne comprend pas pourquoi comme tu le confirmes, c'est un grand débat.
Puisqu'en changeant tous mes chemins en partant de "/", je pars de la racine vers les sous-dossiers (au lieu de faire http://www.domaine.com/sousdossiers... en absolue)
Pour accèder à http://www.domaine.com/dossier/image.jpg
je n'ai qu'à faire /dossier/image.jpg
Alors qu'avant je faisais soit:
http://www.domaine.com/dossier/image.jpg (absolue)
ou
../../dossier/image.jpg si j'étais a un autre endroit de l'arborescence. Comme on ne fait pas de référence au domaine, pas de problème pour changer, mais d'un répertoire à l'autre on doit changer les ../../.. etc... c'est assez pénible.
La conséquence de cette "découverte" c'est que le site n'aura aucun problème si il est sur www.domaine.com ou www.autredomaine.com
les répertoires seront identiques au niveau des sous-dossiers. Ca me fait simplement gagner du temps en cas de déménagements. Mais les chemins sont également sous une même forme (puisqu'ils ne dépendent pas de là où l'on est situé dans l'arborescence)
Certe je pense que tu connaissais vu ta remarque, mais je n'avais même pas remis le système en cause, jusqu'à mon récent problème.
Et regarde par exemple cet article qui compare le relatif/absolu
http://www.php-astux.info/chemins-relatif-absolu.php
et qui ne propose comme issu que l'emploi de l'un ou de l'autre... Même ceux qui nous apprennent les choses ne sont pas totalement au courant du "truc".
Ils expliquent qu'on a un avantage/inconvénient dans chacun des cas, j'ai les deux avantages, et aucun des inconvénients
En tout cas pour moi c'est la manière la plus propre de faire une référence vers un fichier.
Dernière modification par poupougnac (Le 01/10/2008, à 20:53)
Hors ligne
#4 Le 01/10/2008, à 22:37
- BorX
Re : En finir avec les chemins relatifs et absolus!
OK, je comprends mieux
En fait, on appelle généralement chemins absolus les chemins qui commencent par la racine, et chemins relatifs les chemins qui varient selon le contexte, selon la position du fichier appelant.
Clairement, intégrer le nom de domaine dans l'URL est à proscrire.
De manière plus générale, on rencontre ces notions de chemins même en dehors du web, dans des domaines où l'on ne manipule pas de noms de domaine (désolé pour la confusion entre domaine et domaine ).
Le débat se situe sur le choix entre utiliser des chemins qui commencent par la racine (absolu) et utiliser des chemins qui varient selon le contexte (relatif).
Il est plus naturel, au début, d'utiliser des chemins relatifs.
Mais développer des applications de plus grande ampleur oblige à avoir une vision plus globale de l'arborescence, notamment d'un site web, et il devient nécessaire de mettre chaque chose à sa place, ce qui fait qu'on utilise plus naturellement des chemins absolus.
Pour moi, la différence se sent surtout quand on fait évoluer un site. Il peut par exemple arriver qu'un fichier soit déplacé dans un autre répertoire. Quand on utilise des chemins relatifs, il convient de redéfinir toutes les références à ce fichier, en prenant soin de réfléchir à sa position pour chaque modification. Alors qu'en utilisant des chemins absolus, un remplacement global dans tous les fichiers concernés se fait en 2 commandes.
De plus, les chemins absolus se prêtent davantage au paramétrage d'un site...
Imaginons le début d'un php :
<?php
include "/admin/foo.php"
include "/accueil/fichier.php"
...
?>
Si on décide de déplacer le répertoire /admin dans /secure/admin, un remplacement global dans tous les fichiers qui pointaient par exemple vers foo.php serait à faire (ce n'est pas si dur, et c'est clairement plus simplement que de modifier des chemins relatifs).
Mais si notre fichier ressemblait à ça :
<?php
include "$dirAdmin/foo.php"
include "$dirAccueil/fichier.php"
...
?>
Un simple modification d'un fichier de paramétrage permet de reparamétrer tout un morceau de l'arborescence.
Bref... Je ne sais pas quelle techno tu utilises, mais tout ça pour dire que je pense que tu fais le bon choix
Pas de nom de domaine
Chemins absolus (oui oui, on dit bien comme ça )
Dernière modification par BorX (Le 01/10/2008, à 22:38)
Hors ligne
#5 Le 02/10/2008, à 23:46
- poupougnac
Re : En finir avec les chemins relatifs et absolus!
En tout cas depuis hier j'avance beaucoup mieux et j'ai l'impression de fournir un travail plus propre. Donc j'utilise du absolu, bon à savoir! Merci beaucoup!
Hors ligne