2013-09-27 24 views
32

Ich arbeite daran, einen Ordner mit .htaccess zu blockieren, den ich noch nie zuvor benutzt habe, und ich habe Probleme. Hier ist, was ich habe.htaccess/.htpasswd 500 Interner Serverfehler

.htaccess (befindet sich im Ordner I blockiert werden sollen):

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

Htpasswd (an der Wurzel befindet, Passwort wird in der tatsächlichen Datei verschlüsselt):

tim:blah 

I Ich bekomme 500 interne Serverfehler damit und ich kann nicht herausfinden warum.

+2

Was ist '/ .htpasswd', eine Datei in'/home/youraccout/public_html' oder befindet sich im Hauptverzeichnis des Dateisystems '/'? – Prix

+0

Was sagen Ihre Apache Fehlerprotokolle? –

+0

Ich kann auf Fehlerprotokolle nicht über meinen Host zugreifen = (und meine .htpasswd-Datei befindet sich im obersten Ordner, auf den ich zugreifen kann. Es befindet sich nicht in meinem pubic_html-Ordner –

Antwort

82

Wahrscheinlich Problem ist, diese Zeile:

AuthUserFile /.htpasswd 

Diese Zeile sollte zum Beispiel auf die Passwort-Datei vollständigen Dateisystempfad zur Verfügung stellen

AuthUserFile /var/www/.htpasswd 

Ihren Dateisystempfad zu entdecken, können Sie ein PHP-Dokument mit

echo $_SERVER['DOCUMENT_ROOT'];

+0

.htpasswd befindet sich im obersten Ordner, auf den ich zugreifen kann –

+3

.htpasswd' kann nicht von Gruppe und anderen beschriftet werden – anubhava

+4

Ich habe den Home-Pfad gefunden. Mein Host versteckt wichtige Informationen von mir. Danke. –

2

Berechtigungen erstellen kann zu diesem Problem führen.

Stellen Sie sicher, dass .htpasswd vom Webserver-Benutzer lesbar ist.

Zum Beispiel, wenn Sie nginx verwenden, um die nginx.conf zu überprüfen, um herauszufinden, was der Server-Benutzer ist, wenn Sie Apache verwenden, können Sie es herausfinden, this way usw.

dann die Rechteinhaber gesetzt und Leseberechtigungen für .htpasswd

5

Wenn nichts geholfen, und Sie sind mit PHP Sie können es, indem sie diese in Ihre index.php (oben) funktioniert:

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

ich auch, dass einige auf einige Web-Hosts hinzufügen würde, Die .htpasswd-Datei funktioniert nicht, wenn sie in einem öffentlich zugänglichen Bereich platziert wird. Eine kürzliche Installation habe ich bestätigt. Wie andere bemerkt haben, ist es am besten, dies in den Stamm der Website zu platzieren.

+0

"...am besten, um dies in die Wurzel der Website zu setzen "- Ihr letzter Satz scheint zu Ihrem ersten zu widersprechen (angenommen von" root "meinst du das _document root_)? Wie Sie vorschlagen, sollte diese Datei idealerweise außerhalb des öffentlich zugänglichen Bereichs sein . _above_ der Dokumentenstamm. – MrWhite

Verwandte Themen