2009-09-16 5 views
82

J'ai un mot de passe protégé tout mon site web en utilisant .htaccess mais je voudrais exposer l'un des sous-répertoires afin qu'il puisse être vu sans un mot de passe.Comment supprimer la protection par mot de passe .htaccess d'un sous-répertoire

Comment puis-je désactiver la protection par mot de passe htaccess pour un sous-répertoire? Plus précisément, quelle est la syntaxe .htaccess.

Voici mon fichier .htaccess qui est placé à la racine de mon ftp

 
AuthName "Site Administratrion" 
AuthUserFile /dir/.htpasswd 
AuthGroupFile /dev/null 

AuthName secure 
AuthType Basic 
require user username1 
order allow,deny 
allow from all 
+4

Cela pourrait être mieux adapté à serverfault. – beggs

Répondre

129

Vous devez créer un nouveau fichier .htaccess dans le répertoire requis et comprennent la directive Satisfy any en elle comme ceci:

# allows any user to see this directory 
Satisfy Any 

S'il vous plaît noter que la syntaxe changé dans Apache 2.4, cela devrait avoir le même effet

Require all granted 
+6

Je ne pouvais obtenir cela pour travailler avec «Permettre à tous» pas «Satisfaire tout». –

+0

@JessTelford bonne utilisation de l'extrait de code. @RageZ +1 pour la réponse qui a fonctionné pour moi. Pourriez-vous éditer la réponse pour qu'elle soit super simple et la poster en utilisant la méthode du fragment de code. Sinon, quelqu'un devra penser '' thanks' –

+1

@JessTelford Satisfy Any' travaille et il a été miss-orthographié comme 'satisify Any'. Peut-être que c'est la raison pour laquelle cela n'a pas fonctionné pour vous. – BlueBird

1

Vous devez ajouter un autre fichier .htaccess au sous-répertoire qui l'emporte sur l'authentification. .htaccess cascades vers le haut, c'est-à-dire qu'il va chercher dans le dossier en cours, puis monter d'un niveau et ainsi de suite.

+4

Connaissez-vous la syntaxe? Je comprends le concept mais je ne sais pas comment le mettre en œuvre. – justinl

+0

Si vous voulez supprimer l'actuel et utiliser aucune autorisation, il suffit de remplacer par un fichier vide nommé .htaccess –

+3

@Garry ce n'est pas le fonctionnement en cascade de .htaccess, vous devez remplacer explicitement les options. –

31

Ajout à la réponse de RageZ, j'ai utilisé cela dans les directives du serveur:

<Directory /var/www/protected/> 
    AuthType Basic 
    AuthName "Production" 
    AuthUserFile /path/to/.htpasswd 
    Require valid-user 
</Directory> 

<Directory /var/www/protected/unprotected> 
    Satisfy Any 
</Directory> 

Impressionnant. Merci RageZ!

7

Il suffit de créer un nouveau .htaccess dans le sous-répertoire souhaité avec cette directive:

Allow from all

Vous pouvez limiter votre IP uniquement avec:

Allow from x.x.x.x

Voir: http://httpd.apache.org/docs/current/mod/mod_access_compat.html

+0

Cela a fonctionné quand j'ai mis "Exiger tout ce qui est accordé" au lieu de "Permettre à tous" et "Satisfaire tout". Ces deux ne travaillaient pas pour moi. Je suis sur Apache 2.4. – endo64

Questions connexes