2013-09-27 19 views
32

Pracuję nad zablokowaniem folderu .htaccess, którego nigdy wcześniej nie używałem i mam problemy. Oto co mam. Htaccess/.htpasswd 500 Wewnętrzny błąd serwera

.htaccess (znajdujący się w folderze chcę, zablokowany):

AuthName "Username and password required" 
AuthUserFile /.htpasswd 
Require valid-user 
AuthType Basic 

.htpasswd (znajdujący się u nasady i hasło są szyfrowane w rzeczywistej pliku):

tim:blah 

I Otrzymuję z tego 500 błędów serwera wewnętrznego i nie wiem, dlaczego.

+2

Do ciebie, co to jest '/ .htpasswd', plik wewnątrz'/home/youraccout/public_html' lub faktycznie znajduje się w głównym katalogu systemu plików '/'? – Prix

+0

Co mówią dzienniki błędów apache? –

+0

Nie mogę uzyskać dostępu do dzienników błędów przez mój host = (a mój plik .htpasswd znajduje się w najwyższym folderze, do którego mogę uzyskać dostęp, nie ma go w moim folderze pubic_html –

Odpowiedz

82

Najprawdopodobniej problemem jest to linia:

AuthUserFile /.htpasswd 

Linia ta powinna zapewnić pełną ścieżka do pliku haseł np

AuthUserFile /var/www/.htpasswd 

Aby odkryć swoją ścieżkę systemu plików, można utworzyć dokument PHP zawierającą

echo $_SERVER['DOCUMENT_ROOT'];

+0

.htpasswd znajduje się w najwyższym folderze, do którego mogę uzyskać dostęp –

+3

Upewnij się również, że ' .htpasswd' nie jest zapisywalny dla grupy i innych – anubhava

+4

Znalazłem ścieżkę do domu Mój typ hosta ukrywa przed mną ważne informacje Dzięki –

2

Uprawnienia mogą powodować ten problem zbyt.

Upewnij się, że .htpasswd jest czytelny dla użytkownika serwera WWW.

Na przykład, jeśli używasz nginx sprawdzić nginx.conf, aby dowiedzieć się, co użytkownik serwera jest, jeśli używasz Apache można go znaleźć na this way itp

następnie ustawić odpowiednie uprawnienia właścicieli i czytać do .htpasswd

5

Jeśli nic nie pomogło i używasz PHP można zrobić to działa poprzez umieszczenie tego w index.php (na górze):

if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])) { 
    if ($_SERVER['PHP_AUTH_USER'] != 'user' || 
     $_SERVER['PHP_AUTH_PW'] != 'pass') { 

     header('WWW-Authenticate: Basic realm="Protected area"'); 
     header('HTTP/1.0 401 Unauthorized'); 

     die('Login failed!'); 
    } 
} 
0

Chciałbym również dodać, że niektórzy na niektórych hostów internetowych Plik .htpasswd nie będzie działać, jeśli zostanie umieszczony w publicznie dostępnym obszarze. Niedawna instalacja potwierdziła to. Jak zauważyli inni, najlepiej umieścić to w katalogu głównym witryny.

+0

"...najlepiej umieścić to w katalogu głównym witryny "- Twoje ostatnie zdanie wydaje się przeczyć twojemu pierwszemu (zakładając, że" root "oznacza" dokument root "). Jak sugerujesz, plik ten powinien idealnie znajdować się poza publicznie dostępnym obszarem. . _above_ główny dokument. – MrWhite

Powiązane problemy