Ich arbeite daran, einen Ordner mit .htaccess zu blockieren, den ich noch nie zuvor verwendet habe, und ich habe Probleme. Hier ist was ich habe
.htaccess (im Ordner, den ich blockieren möchte):
AuthName "Username and password required"
AuthUserFile /.htpasswd
Require valid-user
AuthType Basic
.htpasswd (befindet sich im Stammverzeichnis, das Passwort ist in der tatsächlichen Datei verschlüsselt):
tim:blah
Ich bekomme 500 interne Serverfehler, und ich kann nicht herausfinden, warum.
Das wahrscheinlichste Problem ist diese Zeile:
AuthUserFile /.htpasswd
Diese Zeile sollte den vollständigen Dateisystempfad zur Kennwortdatei enthalten, z.
AuthUserFile /var/www/.htpasswd
Um Ihren Dateisystempfad zu ermitteln, können Sie ein PHP Dokument erstellen, das Folgendes enthält
echo $_SERVER['DOCUMENT_ROOT'];
Wenn nichts geholfen hat und Sie PHP verwenden, können Sie dies in Ihre index.php (oben) einfügen:
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!');
}
}
Berechtigungen können dieses Problem ebenfalls verursachen.
Stellen Sie sicher, dass .htpasswd
für den Webserver-Benutzer lesbar ist.
Wenn Sie beispielsweise nginx verwenden, überprüfen Sie nginx.conf
, um herauszufinden, was der Serverbenutzer ist. Wenn Sie Apache verwenden, können Sie es herausfinden auf diese Weise usw.
Legen Sie dann die richtigen Besitzer fest und lesen Sie die Berechtigungen auf .htpasswd
.
Hatte das selbe Problem, es hatte mit Zugang zu tun! Haben Sie dem Benutzer www-data
Das Eigentum an der Kennwortdatei übertragen?
chown www-data /var/www/.htpasswd
chmod 640 /var/www/.htpasswd
? Bewahren Sie das Kennwort aus offensichtlichen Gründen am besten außerhalb des Verzeichnisses /var/www/
Auf. Sagen wir in einem solchen Fall /home/MYSERVER/
, Dass Sie auch das übergeordnete Verzeichnis dem übergeordneten Verzeichnis zuweisen müssen Benutzer www-data
.
Ich würde auch hinzufügen, dass die .htpasswd-Datei auf einigen Webhosts nicht funktioniert, wenn sie sich in einem öffentlich zugänglichen Bereich befindet. Eine kürzliche Installation habe ich bestätigt. Wie bereits erwähnt, ist es am besten, dies im Stammverzeichnis der Site zu platzieren.