web-dev-qa-db-fra.com

htaccess <Directory> refuser de tout

J'ai nettoyé mon projet récemment. J'ai un .htaccess principal dans le répertoire racine et 6 autres. 5 d'entre eux ont couru Options -Indexes que je ne voyais pas dans la possibilité d’autoriser l’affichage de répertoires de manière déplacée dans l’affichage principal. Alors maintenant, je n'ai que 2 fichiers .htaccess. le principal et un dans /system qui tient

# Block External Access
deny from all

Donc je voulais courir ça sur /system seulement de l'intérieur de la principale. J'ai donc supprimé celui de/system et ajouté

 # Block External Access
<Directory "/system/">
deny from all
</Directory>

à mon fichier principal .htaccess en laissant 1!

mais maintenant je reçois un

Erreur Interne du Serveur

Le serveur a rencontré une erreur interne ou une mauvaise configuration et n'a pas pu traiter votre demande.

Veuillez contacter l'administrateur du serveur, webmaster @ localhost, et l'informer de l'heure à laquelle l'erreur s'est produite et de tout ce que vous auriez pu faire à ce sujet.

Plus d'informations sur cette erreur peuvent être disponibles dans le journal des erreurs du serveur.

Serveur Apache/2.2.17 (Ubuntu) à 10.0.1.5, port 80

L’objectif est de bloquer la lecture de tous les fichiers de/system et de ses sous-répertoires, tout en permettant de visualiser tout le reste depuis un .htaccess fichier pour l’ensemble du projet. Des idées sur la façon dont je peux résoudre ce problème? J'ai fait quelques recherches sur Google mais je ne pouvais vraiment rien en sortir.

50
Keverw

Vous ne pouvez pas utiliser le directive Directory dans .htaccess. Cependant, si vous créez un fichier .htaccess dans le répertoire/system et placez-y le texte suivant, vous obtiendrez le même résultat.

#place this in /system/.htaccess as you had before
deny from all
81
Ulrich Palha

Vous pouvez également utiliser la directive RedirectMatch pour refuser l'accès à un dossier.

Pour refuser l'accès à un dossier, vous pouvez utiliser le RedirectMatch suivant dans htaccess:

 RedirectMatch 403 ^/folder/?$

Cela empêchera un accès externe à/folder/eg: http://example.com/folder/ retournera une erreur 403 interdite.

Pour refuser l'accès à tout ce qui se trouve dans le dossier, vous pouvez utiliser ceci:

RedirectMatch 403 ^/folder/.*$

Cela bloquera l'accès à l'ensemble du dossier, par exemple: http://example.com/folder/anyURI renverra une réponse d'erreur 403 au client.

11
starkeen

Vous pouvez utiliser depuis le répertoire racine:

RewriteEngine On
RewriteRule ^(?:system)\b.* /403.html

Ou:

RewriteRule ^(?:system)\b.* /403.php # with header('HTTP/1.0 403 Forbidden');
1
Gigabiter