Quelle est la différence entre les chemins relatifs et absolus ?
Astuce par Raphael (Eleveur de kiwiz, Strasbourg)
Souvent source d'erreurs, de pages introuvables, d'images manquantes ou de styles non appliqués, le format d'écriture des liens est très important. Et pourtant, on ne prend pas forcément garde à la façon dont on fait pointer ces dernier vers les différents fichiers cible. Suivant la convention d'écriture utilisée, de nombreux problèmes peuvent survenir. En effet, deux types d'écritures cohabitent, chacune avec leur spécificité propre :
- le chemin relatif (absence de slash initial) ;
- le chemin absolu (slash en préfixe du chemin).
1) Sur le Web
Le chemin relatif : dossier/page.html - ./dossier/page.html ou ../dossier/page.html
La cible (page.html) va être cherchée par le navigateur à partir de la page html ou de la feuille de style qu'il interprète.
./ : signifie que la page est cherchée à partir du répertoire courant.
../ : signifie que la page est cherchée à partir du répertoire parent (on remonte d'un répertoire).
Il est tout à fait possible de remonter plusieurs répertoires. Pour cela nous cumulerons les ../ .Par exemple pour remonter de deux niveaux, nous écrirons ../../dossier/page.html.
Le chemin absolu : /dossier/page.html Dans bien des cas, le chemin absolu est la convention d'écriture la plus sûre.
La page cible va être cherchée par le navigateur à partir de la racine du site.
Dans notre exemple, le fichier page.html sera recherché directement à partir du domaine principal ou d'un sous-domaine : http://www.domaine.fr/dossier/page.html ou http://autre.domaine.fr/dossier/page.html
2) En langage côté serveur (PHP)
Le chemin relatif : dossier/page.php - ./dossier/page.php ou ../dossier/page.php La cible (page.php) va être cherchée à partir du fichier exécuté.
Attention : si vous utilisez cette convention d'écriture pour un fichier inclus au moyen de la fonction include(), soyez conscient que le chemin relatif part non pas du fichier lui-même, mais du fichier dans lequel est placé son contenu : il s'agit du fichier exécuté par le serveur.
Le chemin absolu : /dossier/page.php La cible va être cherchée en partant de la racine du système de fichiers : /.
Par exemple sous Windows : include('/inc/menu.php'); équivaudrait à C:>inc\menu.php et non pas à http://www.domaine.fr/inc/menu.php. Sous Linux, cela équivaudrait à remonter au premier niveau de l'arborescence du point de montage.
Pour obtenir la racine du serveur web, utilisez la variable PHP $_SERVER['DOCUMENT_ROOT'] en préfixe.
Voir en complément : Inclure un fichier dans un autre grâce à PHP.








