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 :
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, dans le sous-répertoire "dossier".
./ : 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 niveau).
Il est tout à fait possible de remonter plusieurs répertoires.
Pour cela il faudra cumuler les ../ et ainsi pour remonter de deux niveaux, il sera possible d'écrire ../../dossier/page.html.
Le slash initial précise que l'on ne se réfère plus à l'emplacement courant mais que l'on remonte directement à la racine pour ensuite préciser le chemin complet.
Dans bien des cas, le chemin absolu est la convention d'écriture la plus sûre, mais aussi la moins souple si l'arborescence est amenée à changer. La page cible sera cherchée par le navigateur à partir de la racine du site.
Dans notre exemple, le fichier page.html sera recherché directement à partir de la racine du domaine : http://www.mondomaine.fr/dossier/page.html.
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.
La cible va être cherchée en partant de la racine du système de fichiers qui est représentée par le slash initial : /.
Par exemple sous Windows : include('/inc/menu.php'); équivaudrait à C:\inc\menu.php et non pas à http://www.domaine.fr/inc/menu.php qui n'est au fond qu'une vue "virtuelle" du répertoire qui héberge le site, et qui peut être placée n'importe où dans l'arborescence du système de stockage.
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.