problema proteggere una directory mediante .htaccess
Domanda
Ho creato un file .htaccess e .htpasswd, e memorizzato nella cartella voglio proteggere e quando ho navigato a quella cartella, mi è stato chiesto il nome utente e passowrd (memorizzata nel file .htpasswd) dopo aver inserito il nome utente e la password, ho ottenuto un errore del server interno 500. Ho usato i file sia localhost (Windows) e su un server web (linux credo) sia dato lo stesso risultato menzionato.
questo è il mio file .htaccess:
<Files ~ "^\.(htaccess|htpasswd)$">
deny from all
</Files>
AuthUserFile /.htpasswd
AuthGroupFile /dev/null
AuthName "Please enter your ID and password"
AuthType Basic
require valid-user
order deny,allow
Soluzione
dubito che il file .htpasswd
è davvero trova alla radice del file system del server insieme a /bin
, /usr
, /home
, e altri (piuttosto che all'interno della parte del filesystem servito ai browser web).
Secondo la documentazione di Apache ( 1 , 2 ), AuthUserFile
si aspetta un percorso di file (come se si fosse in ServerRoot, di solito /usr/apache
o simili, e cercando di individuare il file dalla shell Unix). Non può essere un URL, assoluto o relativo. Correggere il percorso del file .htpasswd
di conseguenza.
Si noti che, se possibile, non si dovrebbe mettere il file all'interno di una cartella .htpasswd
public_html
o htdocs
, perché qualsiasi errore di configurazione potrebbe non solo permetterà l'accesso non autorizzato ai file che si desidera proteggere, ma anche i nomi utente e le password hash autorizzati.
Altri suggerimenti
Usa un percorso di hosting assoluto, ad esempio:
/home/content/14/5267714/html/.htpasswd