Objectifs
Le principe :
- Lorsqu'on travaille avec un serveur Apache (Cas très fréquent pour les serveurs sérieux sur le web ( Unix, Linux, OSX, etc.) la présence d'un fichier particulier nommé
.htaccessindique au serveur que les fichiers de ce dossier et tous les sous-dossiers ne doivent pas être diffusés tout à fait librement. - La vérification se fait sur la base d'une identification / mot de passe ou selon le n° IP de la machine qui demande les pages.
- Lorsqu'on travaille avec un serveur Apache (Cas très fréquent pour les serveurs sérieux sur le web ( Unix, Linux, OSX, etc.) la présence d'un fichier particulier nommé
Présentation
- Les fichiers
.htaccess(ou "fichiers de configuration distribués") fournissent une méthode pour modifier la configuration du serveur au niveau d'un répertoire. Un fichier, contenant une ou plusieurs directives de configuration, est placé dans un répertoire de documents particulier, et ses directives s'appliquent à ce répertoire et à tous ses sous-répertoires. - Lorsque l'on développe en local avec les logiciels Wampserver sous Windows ou encore MAMP sous Max OS X, les fichiers .htaccess ne fonctionnent pas avec l’installation par défaut. Le plus souvent, le serveur renvoie un code d’erreur 500.
- La raison est simple, le module rewrite d’Apache n’est pas activé par défaut, pour l’activer il suffit d’éditer le fichier de configuration d’Apache (httpd.conf).
- Les fichiers
Test
- Tester si
.htaccessmarche- Le moyen le plus simple de tester si Apache utilise votre fichier
.htaccess, ou s'il l'ignore autrement, est de le casser intentionnellement. - Modifiez le fichier
.htaccess, de sorte que la première ligne indique "Test".:
Test. # Set the default handler DirectoryIndex index.php index.html index.htm - Le moyen le plus simple de tester si Apache utilise votre fichier
- Maintenant, si vous actualisez la page dans votre navigateur, vous devriez voir une page d'erreur comme celle-ci:
- Si vous voyez cette erreur, c'est vraiment bien ! Cela signifie qu'Apache analyse le fichier
.htaccesset qu'il rencontre l'erreur que nous y avons mise! Jusqu'ici tout va bien! - Si vous ne voyez pas une "Erreur de serveur interne", votre configuration Apache ignore le fichier
.htaccesset vous devez résoudre ce problème. - En général, Apache ignore le fichier
.htaccessen raison de la configuration Apache suivanteAllowOverridenone. - Vérifiez la configuration de votre hôte virtuel et ajoutez/modifiez AllowOverride All.

- Tester si
Sous Wampserver
- 1° Pour protéger des pages web, il faut créer un fichier
.htaccesset le déposer dans le dossier à protéger - 2° .Pour une protection par mot de passe, il faut en outre créer un fichier
.htpasswdqui stocke tous les utilisateurs et leur mot de passe (encrypté). - Sous Wampserver, il se trouve dans : Program Files\wamp\bin\apache\Apache2.2.11\conf.
- Pour activer le module rewrite, remplacez la ligne :
LoadModule rewrite_module modules/mod_rewrite.so - Par :
LoadModule rewrite_module modules/mod_rewrite.so Démarche
- D'abord: j'ai activé " rewrite_module " dans le menu apache, puis j'ai vérifié la page phpinfo et j'ai vu ce module ajouté à sa partie " Loaded Modules ".
- Deuxièmement: j'ai vérifié le httpd.conf et apporté quelques modifications, c'est le résultat (juste les parties importantes):
ServerRoot "c:/program Files/wamp/bin/apache/apache2.2.11" Listen 80 ServerName localhost:80 DocumentRoot "c:/program Files/wamp/www/" <Directory /> Options FollowSymLinks # AllowOverride None # Order deny,allow # Deny from all AllowOverride all Order Allow,Deny Allow from all </Directory> <Directory "c:/program Files/wamp/www/"> Options Indexes FollowSymLinks AllowOverride all Order Allow,Deny Allow from all </Directory> LoadModule alias_module modules/mod_alias.so LoadModule rewrite_module modules/mod_rewrite.so
Suivant: j'ai créé un alias pour mon espace de travail. Voici le contenu de son fichier .conf: Alias /basic_test/ "e:/Projects/basic_test/" <Directory "e:/Projects/basic_test/"> Options Indexes FollowSymLinks MultiViews AllowOverride all Order allow,deny Allow from all </Directory> Suivant: J'ai placé un simple "index.php" et "test.php" dans la racine de mon espace de travail et j'ai testé l'alias par ces adresses: -> " localhost / basic_test / index.php " -> " localhost / basic_test / test .php "Ils ont parfaitement fonctionné ... Enfin , j'ai ajouté un fichier ".htaccess" à la racine de mon espace de travail (à côté de index.php), et j'y ai écrit: <IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^index.php$ test.php </IfModule>- 1° Pour protéger des pages web, il faut créer un fichier
- Cliquez sur l'icône Wamp et ouvrez Apache / httpd.conf et recherchez "#LoadModule rewrite_module modules / mod_rewrite.so". Supprimez # comme ci-dessous et enregistrez-le
- et redémarrez tous les services.
LoadModule rewrite_module modules/mod_rewrite.so