Apache, protéger par mot de passe tout un hôte virtuel sauf certaines adresses : utilisation de LocationMatch
Il est assez classique d'utiliser les fonctions d'authentification d'Apache, par exemple auth_digest, pour sécuriser l'accès à un répertoire ou une application web propulsée par Apache.
Toutefois, il est parfois souhaitable de laisser en accès sans mot de passe une adresse spécifique, correspondant par exemple à une page publique ou à une fonctionnalité de l'application qu'un utilisateur lambda doit pouvoir déclencher.
Apache permet cela grâce à la direction "LocationMatch" et à des expressions régulières.
Par exemple, avec l'exemple ci-dessous placé dans un hôte virtuel correspondant à mon-app.domaine.tld :
<LocationMatch "^(?!/zone-publique)"> AuthType Digest AuthName "mon-app" AuthDigestProvider file AuthUserFile /path/to/digest-password-file Require valid-user </LocationMatch>
tout accès à l'hôte virtuel sera protégé par mot de passe sauf l'adresse http://mon-app.domaine.tld/zone-publique qui sera accessible à tous sans mot de passe.
Bons paramétrages !