Come rimuovere la protezione con password .htaccess da una sottodirectory


97

Ho protetto con password l'intero sito Web utilizzando, .htaccessma vorrei esporre una delle sottodirectory in modo che possa essere visualizzata senza password.

Come posso disabilitare la protezione con password htaccess per una sottodirectory? In particolare qual è la .htaccesssintassi.

Ecco il mio .htaccessfile che si trova nella radice del mio ftp.

AuthName "Amministrazione del sito"
AuthUserFile /dir/.htpasswd
AuthGroupFile / dev / null

AuthName sicuro
AuthType Basic
richiedi nome utente utente1
ordine consentire, negare
consentire a tutti

4
Questo potrebbe essere più adatto per serverfault.
supplica il

Risposte:


154

È necessario creare un nuovo .htaccessfile nella directory richiesta e includere la Satisfy anydirettiva in questo modo, fino a Apache 2.3:

# allows any user to see this directory
Satisfy Any

La sintassi è cambiata in Apache 2.4, questo ha lo stesso effetto:

Require all granted

7
Potrei solo farlo funzionare con Allow from allno Satisfy Any.
Jess Telford

@JessTelford buon uso dello snippet di codice. @RageZ +1 per la risposta che ha funzionato per me. Potresti modificare la risposta in modo che sia semplicissima e pubblicarla utilizzando il metodo dello snippet di codice. Altrimenti qualcuno dovrà pensarethanks
Jesse Burcsik

2
@JessTelford Satisfy Anysta lavorando ed è stato scritto male come Satisify Any. Forse è questo il motivo per cui non ha funzionato per te.
BlueBird

1
Avevo bisogno di un singolo file non protetto (tutto il resto protetto), fatto lo stesso nella sezione <Files>
Nick

Questo non funziona per me - ottengo ancora la password modale che richiede nome utente e pwd .. Uso di Firefox e Windows 7 ... Qualcuno ha idea?
ItsMeDom

36

Aggiungendo alla risposta di RageZ, ho usato questo nelle direttive del server:

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

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

Eccezionale. Grazie RageZ!



1

È necessario aggiungere un altro file .htaccess alla sottodirectory che sovrascrive l'autenticazione. .htaccess scorre verso l'alto, cioè cercherà nella cartella corrente, poi salirà di livello e così via.


4
conosci la sintassi? Capisco il concetto ma non so come implementarlo.
justinl

Se desideri rimuovere quello corrente e non utilizzare i permessi, sostituiscilo semplicemente con un file vuoto denominato .htaccess
Gaʀʀʏ

3
@ Garry non è così che funziona la cascata .htaccess, devi sovrascrivere esplicitamente le opzioni.
William Denniss

1

Ecco un modo per consentire la sottodirectory "foo" tramite l'autenticazione di base dal file .htaccess principale di un sito:

AuthType Basic
AuthName "Password Required"
AuthUserFile /dir/.htpasswd
Require expr %{REQUEST_URI} =~ m#^/foo/#
Require valid-user

Nota: funziona in Apache 2.4. Non ho confermato per le versioni precedenti.


0

Se vuoi impedire una specifica directoty dall'autenticazione htaccess, puoi usare il seguente codice nel tuo file htaccess in alto.

AuthType Basic AuthName "Enter Pass" AuthUserFile /home/public_html/.htpasswd /*PATH TO YOUR .htpasswd FILE*/ Require valid-user SetEnvIf Request_URI "(/DIRECTORY_NAME/)$" allow Order allow,deny Allow from env=allow

Inoltre, se si desidera impedire più directory, aggiungere

SetEnvIf Request_URI "(/DIRECTORY_NAME/)$" allow

tante volte quante directory vuoi rimuovere dalla prevenzione htaccess.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.