Comment faire pour refuser l'accès à un fichier dans .htaccess
J'ai le texte suivant .htaccess:
RewriteEngine On
RewriteBase /
# Protect the htaccess file
<Files .htaccess>
Order Allow,Deny
Deny from all
</Files>
# Protect log.txt
<Files ./inscription/log.txt>
Order Allow,Deny
Deny from all
</Files>
# Disable directory browsing
Options All -Indexes
Je suis en train d'interdire l'accès aux visiteurs le fichier suivant:
domain.com/inscription/log.txt
mais ce que j'ai ci-dessus ne fonctionne pas: je peux toujours accéder au fichier depuis le navigateur à distance.
Vous devez vous connecter pour publier un commentaire.
Dans un fichier htaccess, le champ d'application de la
<Files>
directive ne s'applique qu'à ce répertoire (je suppose que pour éviter la confusion lorsque les règles/directives dans le htaccess de sous-répertoires appliquée en remplaçant celles de la société mère).De sorte que vous pouvez avoir:
Pour Apache 2.4+, vous pouvez utiliser:
Dans un fichier htaccess dans votre
inscription
répertoire. Ou vous pouvez utiliser mod_rewrite de faire en sorte de gérer à la fois les cas de refus d'accès au fichier htaccess ainsi que log.txt:<Files>
directive ne s'applique qu'au répertoire" - non, il ne le fait pas. Il s'applique à ce répertoire et tous les sous-répertoires-dessous. Donc<Files "log.txt">
va attraper/log.txt
et/inscription/log.txt
.Order Allow,Deny
est supprimée de la version 2.4?Forte pattern matching — C'est la méthode que j'utilise ici de Presse Périssables. Grâce à la correspondance de modèle, cette technique empêche l'accès externe à tous les fichiers contenant “.hta”, “.HTA”, ou en tout cas insensibles à la combinaison de ceux-ci. Pour illustrer, ce code d'empêcher l'accès par l'une des demandes suivantes:
etc.., etc. Clairement, cette méthode est très efficace pour la sécurisation de votre site des fichiers HTAccess. De plus, cette technique comprend également le fortifiant “Satisfaire Tous” de la directive. Notez que ce code doit être placé dans votre domaine racine du fichier HTAccess:
<Files ~"^\..*">
.Je ne crois pas actuellement accepté réponse est correcte. Par exemple, j'ai le texte suivant
.htaccess
fichier à la racine d'un serveur virtuel (apache 2.4):Cela empêche l'accès externe à
reminder.php
qui est dans un sous-répertoire.J'en ai un similaire
.htaccess
fichier sur mon serveur Apache 2.2 avec le même effet:Je ne sais pas pour vous, mais je soupçonne que c'est la tentative de définir le sous-répertoire spécifiquement dans le
.htaccess
fichier, viz<Files ./inscription/log.txt>
qui est à l'origine de la panne. Il serait plus simple de mettre le.htaccess
fichier dans le même répertoire quelog.txt
c'est à dire dans leinscription
répertoire et il va y travailler.Place la ligne ci-dessous dans votre .fichier htaccess et remplacez le nom de fichier que vous souhaitez
Bien vous pouvez utiliser le
<Directory>
tagpar exemple:
Ne pas utiliser
./
parce que si vous venez d'utiliser/
il recherche dans le répertoire racine de votre site.Pour un exemple plus détaillé visite http://httpd.apache.org/docs/2.2/sections.html
<Directory>
conteneur n'est pas autorisée dans.htaccess
. Dans.htaccess
, le.htaccess
fichier lui-même est le "Directory conteneur" (répertoire, fichier de config).Redirect /inscription/log.txt access_denied.html
Cela va rediriger l'utilisateur versaccess_denied.html
si l'utilisateur passe àinscription/log.txt
dans l'inscription de répertoire.