Configurez le htaccess différemment suivant les fichiers ou dossiers

Vous utilisez sûrement le fichier .htaccess pour verrouiller complètement l’accès à un dossier via internet :

Order Deny,Allow
Deny from All

Et cette protection mise en place par apache est très puissante, elle mets un dossier et l’ensemble de ses sous-dossiers « hors-web ». C’est à dire inaccessible depuis internet mais laisse l’accès à PHP(qui ne passe pas par internet pour un include ou un fopen).

Le problème de cette technique c’est que tout un dossier est verrouillé. A la fin de cet article vous serez capable de protéger des fichiers/dossiers répondant à un modèle(ou pattern).

Par exemple : .inc.php$

Fichiers

<Files nomdufichier.php>
	[configuration]
</Files>

Dossiers

<Directory /home/monsite/admin>
	[configuration]
</Directory>

Pattern

<FilesMatch "[pattern]">
	[configuration]
</FilesMatch>
<DirectoryMatch "[pattern]">
	[configuration]
</DirectoryMatch>

Il existe aussi une autre version qui est déconseillée :

<Files ~ "[pattern]">
	[configuration]
</Files>
<Directory ~ "[pattern]">
	[configuration]
</Directory>

Exemples

Empêcher de voir une image pour une certaine IP

<FilesMatch "\.(jpe?g|png|gif)$">
	Order Deny,Allow
	Deny From 209.85.229.105
</FilesMatch>

Définissez un charset et une langue spéciales pour certaines extensions

<FilesMatch "\.html?$">
	AddDefaultCharset utf-8
	DefaultLanguage en-us
</FilesMatch>

Identifications différentes suivante le fichier

<Files admin.php>
	AuthName "Veuillez vous identifier"
	AuthType Basic
	AuthUserFile "/home/monsite/www/.htpasswd"
	Require valid-user
</Files>

Essayez un exemple

Vous pouvez télécharger l’exemple ou le tester directement en ligne.

Tagués avec : , , ,
Publié dans Apache

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*