02 Feb 2019, 00:00

Usage du .htaccess dans Apache 2

Share

Mot de passe pour un répertoire

Le fichier .htaccess est un fichier en texte clair, qui permet de définir le message affiché lors de la demande de mot de passe, ainsi que le fichier dans lequel Apache ira vérifier que l’utilisateur/mot de passe est correct (le .htpasswd).
Dans mon cas, je choisis de faire un fichier .htpasswd par répertoire, car tous les répertoires ne doivent pas être accessibles aux mêmes utilisateurs.

Je crée le .htpasswd :

cd /path/to/site/files
htpasswd -c .htpasswd user1

L’option -c sert à créer/réécrire le fichier. Si on ne la spécifie pas, ça rajoute une nouvel utilisateur qui pourra lire ce répertoire.

Ensuite, on ajoute le .htaccess, qui va directement protéger le répertoire

nano .htaccess

Dans lequel on met :

AuthType Basic
AuthUserFile "/path/to/site/files/.htpasswd"
AuthName "Identification pour ce dossier ?"
Require valid-user

Il semble indispensable d’indiquer le chemin complet vers le .htpasswd, sans quoi le serveur retourne une erreur 500.

Dans le cas où le repértoire est en dehors des répertoires standards de Apache (/usr/share ou /var/www), il faut les ajouter à la main dans le /etc/apache2/apache2.conf ou dans /etc/apache2/sites-available/00X-mon-site.conf :

<Directory /path/to/site/files/>
	    Options Indexes FollowSymLinks
	    AllowOverride AuthConfig
	    Require all granted
</Directory>

Ceci permet respectivement de suivre les liens symboliques (utile pour mon setup), de permettre d’outrepasser les droits localement (et donc d’utiliser le htaccess), et permet à tout le monde (toutes les IPs notamment) d’accéder au site.

AllowOverride

Cette directive doit être présente dans le fichier de configuration d’apache (dans /etc/apache2/ sous Debian, dans /usr/local/apache2/conf/httpd.conf pour l’image docker d’apache) pour autoriser, entre autres, le .htaccess.

Par défaut, c’est None, qui n’autorise rien dans les htaccess (et renverra une erreur 500 si un htaccess est utilisé). On peut remplacer None par les différents mot-clés (AuthConfig FileInfo Indexes Limit Options) ou All pour l’ensemble. Chacune de ces directives est un ensemble de sous-directives.

Pour un filtrage plus granulaire, on peut utiliser la directive AllowOverrideList pour autoriser uniquement certaines sous-directives.