Protéger son site selon le HTTP_HOST
Hello les amis !
Voyons dans cet article comment interdire ( ou mettre une authentification ) sur un domaine en particulier.
Le point très intéressant est d’avoir un seul fichier de configuration Apache ( donc un VirtualHost ) et le même DocumentRoot.
Présentation du besoin
Je souhaite donc avoir un accès à « www.djerfy.com » mais un accès restreint à « www.djerfy.fr » qui possède le même fichier vhost ( Apache ) et le même DocumentRoot.
Ces deux domaines sont définis comme ServerAlias dans mon fichier.
Configuration dans le vhost
En gros, nous allons interdire ( du moins mettre une authentification ) sur tout ce qui est « www.djerfy.fr », vous me suivez ?
Commençons par notre configuration apache :
<Directory "/datas/web/www.djerfy.com"> AllowOverride All Order Deny,Allow Satisfy any Deny from all Require valid-user Allow from env=!DENY_HOST # Protection htpasswd AuthName "Private HOST" AuthType Basic AuthUserFile "/datas/web/www.djerfy.com/.htpasswd" </Directory>
# Définition du HOST refusé SetEnvIfNoCase HOST ^www\.djerfy\.fr$ DENY_HOST
Et voilà, analysez bien cette configuration, il vous faudra l’adapter sur votre configuration en changeant rapidement quelques paramètres !
Aidez-vous de la documentation officielle si vous ne comprennez pas tout.
Il vous faudra effectuer un rechargement d’Apache pour la prise en charge ( « configtest » & « graceful » )
Chargement du module Apache
Si vous avez eu une erreur lors du rechargement d’Apache, cette étape est pour vous, sinon vous pouvez la passer.
Vérifiez donc bien dans votre configuration d’Apache ( « httpd.conf » généralement ) que le module suivant est activé :
LoadModule setenvif_module modules/mod_setenvif.so
Si ce n’est pas le cas, il vous faudra le charger et refaire le rechargement d’Apache ( « configtest » & « graceful » ).
Si vous avez toujours une erreur, c’est que vous avez mal suivis ma configuration ( ou alors vous êtes trop nul ^_^ ).
Création du htpasswd
Maintenant que notre configuration est faite, vous devez créer votre fichier « .htpasswd » qui comportera vos utilisateurs ( sinon c’est pas possible de faire un accès, un peu normal ).
htpasswd -c /datas/web/www.djerfy.com/.htpasswd administrateur
L’option « -c » est ici UNIQUEMENT pour créer le fichier, si vous voulez faire un rajoute, et bien ne l’utilisez pas.
Le « /datas/web/www.djerfy.com/.htpasswd » permet de définir mon fichier en question, c’est celui que vous avez définie comme « AuthUserFile » dans la configuration Apache.
En enfin le dernier point qui est « administrateur » est simplement votre login d’accès. Le mot de passe est définie quand vous tapez « Entrée ».
Tests & validation
Vous avez bien fait votre configuration Apache ? Le fichier « .htpasswd » est bien présent ? Le module Apache est chargé ?
Si vous avez bien effectué l’ensemble, vous pouvez tester vos accès.
Vous devrez donc avoir un accès normal sur l’un ( www.djerfy.com ) et une authentification sur l’autre ( www.djerfy.fr ).
N’hésitez pas à utiliser les commentaires si vous avez des questions / aide !