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 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
Pour obtenir la racine du serveur web, utilisez la variable $_SERVER['DOCUMENT_ROOT'] en préfixe del'antislash ().