Tutoriaux > Linux > Fichier .htaccess qui ne fonctionne pas : les solutions de configuration d'Apache
Selon votre configuration d'Apache, les fichiers .htaccess peuvent ne pas être pris en compte. Rien de plus frustrant que de ne pas pouvoir protéger un répertoire ! Voici quelques solutions.
Inutile de chercher à faire fonctionner de l'URL-Rewriting ou de la protection par .htpasswd si on ne sait pas si les .htaccess sont pris en compte par Apache...
On va donc créer un petit fichier .htaccess à la racine de notre site, et y insérer :
Deny from all
Si cela fonctionne, nous avons le message suivant qui s'affiche à la place de la page du site :
Citation de Apache
You don't have permission to access / on this server.
Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny8 with Suhosin-Patch mod_python/3.3.1 Python/2.5.2 mod_perl/2.0.4 Perl/v5.10.0 Server at 192.168.1.250 Port 80
Si vos .htaccess ne répondent pas du tout, il y a d'énormes chances que cela vienne d'une ligne AllowOverride None cachée dans votre configuration Apache. Le problème étant de savoir où !
J'écris ce rapide tutoriel car je viens de passer quelques temps à éplucher tous mes fichiers de configurations, de /etc/apache2/apache2.conf à posts.conf en passant pas httpd.conf...
Le AllowOverride None peut se cacher dans plusieurs fichiers :
C'est dans ce dernier fichier que le mien se trouvait... J'ai une distribution Debian Lenny.
Voici à quoi le fichier ressemble maintenant, j'ai commenté les AllowOverride None et ai ajouté des AllowOverride All, pour que les .htaccess soient pris en compte dans le domaine /var/www
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride All
# AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
Order allow,deny
AllowOverride All
# AllowOverride None
allow from all
</Directory>
</VirtualHost>
C'est surtout ces deux là qu'il faut enlever, ceux concernant votre dossier apache !
N'oubliez pas de redémarrer Apache pour prendre en compte la nouvelle configuration :
/etc/init.d/apache2 restart
Ou (Selon les distributions) :
service httpd restart
J'espère vous avoir évité quelques arrachages de cheveux
Par Pouzy
, Le 27 Avril 2010 à 21h50
Ce tutoriel est la propriété d'Aidoweb et ne peut en aucun cas être copié.
Bonjour,
merci pour cette précieuse aide !!
pensez a faire la même modif pour le port 443 plus bas dans le fichier, car si l'utilisateur tape https:votresite il aura de nouveau acces au fichier !!!
J'y ai passé la journée...
Merci beaucoup du coup de main !!!
Cette solution fonctionne, mais je voudrais rajouter une petite précision.
Si après avoir fait cette manipulation, ça ne fonctionne pas et vous vous retrouvez devant une erreur 500. Allez voir le log Apache qui vous dira de quoi il retourne.
Dans mon cas c'était le module "RewriteEngine" d'Apache qui n'étais pas activé et donc créait une erreur.
merciiiiiiiiiiiii beaucoup tu ma sauver la vie après 2semaines de non compréhension !!!
Merci beaucoup !!!!
Merci beaucoup
Merci à vous
Merci pour ce tuto trés précis et efficace qui m'a sauvé ma fin de journée.