2005-07-17

Développement Web local

J'utilise l'excellent EasyPHP qui offre un serveur Web (Apache, pour ne pas le nommer) afin d'effectuer mes développements Web sur ma propre machine.

Pour travailler sur un site en particulier, on crée un dossier enfant par rapport à la racine local : 127.0.0.1. Ça donne des URL de cette sorte :

http://127.0.0.1/TestPhp/
http://127.0.0.1/yann/
http://127.0.0.1/psydk/

Pas de problème, sauf quand on commence à utiliser des liens html absolus. J'ai commencé à en utiliser sur mon site quand j'ai mis mon nouveau système de permaliens, afin qu'une ressource de mon site liée dans un billet soit accessible à partir de la racine : http://psydk.org ou à partir du « dossier » d'archives : http://psydk.org/archives. Ainsi, « gfx/bobun.jpg » devenait « /gfx/bobun.jpg » (notez le / initial).

Avec ce lien absolu, et une adresse locale « http://127.0.0.1/psydk/ », le navigateur cherche la ressource à la racine, sur 127.0.0.1 au lieu de 127.0.0.1/psydk/, ce qui n'est pas l'effet souhaité.

La 1re idée qui m'est venue à l'esprit, et que j'avais déjà vue et utilisée ailleurs, consiste à écrire tous les liens html à l'aide de PHP, en plaçant une variable au début de l'adresse de chaque lien :

À définir quelque part dans un fichier de configuration PHP :

<?php 
define('ROOTDIR', '/psydk/'); // Racine du site
?>

Un lien devient alors :

<a href="<?=ROOTDIR?>gfx/bobun.jpg">Bobun</a>

Et au moment de publier le site, il faut penser à modifier la valeur définie comme racine du site :

<?php 
define('ROOTDIR', '/'); // Racine du site
?>

En bref, c'est une tâche contraignante, et qui pollue le contenu html, avec le risque d'oublier de fixer un lien correctement.

J'ai donc cherché une méthode plus satisfaisante, dans le but de simuler l'URL finale du site, mais en local, comme suit : http://localpsydk.org. Je vous livre la procédure à suivre pour arriver à ces fins sous Windows. Je reste dans l'exemple de localpsydk.org, il vous sera facile de l'adapter à vos propres besoins :

1) Éditez le fichier C:\WINNT\system32\drivers\etc\hosts pour ajouter une correspondance entre le nom de votre choix et l'adresse locale de votre machine. Le fichier ressemblera à ça :

# Copyright (c) 1993-1999 Microsoft Corp.
#
# Ceci est un exemple de fichier HOSTS utilisé par Microsoft TCP/IP
# pour Windows.
#
# blabla...
#

127.0.0.1       localhost
127.0.0.1	localpsydk.org

Note : sous XP, remplacez WINNT par WINDOWS dans le chemin vers le fichier hosts.

2) Éditez le fichier C:\Program Files\EasyPHP1-7\apache\conf\httpd.conf et ajoutez ces lignes :

<VirtualHost *:80>
ServerName localpsydk.org
DocumentRoot D:/WebSites/psydk
</VirtualHost>

DocumentRoot est le chemin du site sur votre disque dur. La version 1.8 de EasyPHP étant sortie, vous aurez peut-être « EasyPHP1-8 » dans le chemin au lieu de « EasyPHP1-7 ».

3) Redémarrez le serveur Apache. Et hop, « http://localpsydk.org/gfx/bobun.jpg » fonctionne :)