2013-03-18 7 views
12

hoffend, dass jemand in der Lage sein könnte, das Problem hier herauszufinden! Ich googele seit über 2 Stunden und nichts, was ich versuche, funktioniert ....htpasswd und .htaccess - interner Serverfehler

Ich möchte meine Website mit einem Passwort schützen, aber sobald ich die .htpasswd und .htaccess-Dateien hinzufügen, erhalte ich einen Serverfehler:

Internal Server error Der Server hat einen internen Fehler oder eine falsche Konfiguration und konnte Ihre Anfrage abzuschließen. Wenden Sie sich an den Serveradministrator, und informieren Sie ihn über den Zeitpunkt des Auftretens des Fehlers, und alles, was Sie möglicherweise getan haben, hat den Fehler verursacht. Weitere Informationen zu diesem Fehler sind möglicherweise im Serverfehlerprotokoll verfügbar.

Hier ist der Code Ich verwende:

.htaccess

AuthType Basic 
AuthName "Top Secret for SongKick eyes only." 
AuthUserFile /webroot/.htpasswd 
require valid-user 

Htpasswd

songkick:isS1rCTQE/p8E 

ich auch AuthUserFile /.htpasswd versucht haben (dh ohne "webroot", also den Namen des Ordners in File Mana ger) aber das funktioniert auch nicht.

Ich bin mit GoDaddy btw Hosting, wenn das einen Unterschied macht.

Jede Hilfe ist sehr willkommen - ich bin kein Entwickler also nicht viele der in vielen der Hilfe Artikel verwendeten Begriffe verstehen!

+0

Es sollte detaillierte Fehlerbericht in Apache-Protokolldatei anzeigen, überprüfen Sie es zuerst. – aram90

Antwort

4

Zwei Dinge in den Sinn kommen.

  1. Ist .htpasswd lesbar durch den Web-Server-Benutzer?

  2. Wissen Sie, ob Apache mit AllowOverride all gesetzt .htaccess zu ermöglichen, wie ein bestimmungsgemäßer Betrieb?

+2

Hey Jake, agh Ich weiß eigentlich nicht was diese beiden Dinge bedeuten. Welche Schritte würde ich unternehmen, um diese herauszufinden? –

+0

Ich bekam eine 500, bis ich die Berechtigungen für '.htpasswd' in' -rw-r - r - 'änderte. – horizens

+0

@horizens Happy das hat geholfen! Wie bereits erwähnt, muss '.htpasswd' vom Webserver-Benutzer lesbar sein. Und Berechtigungen von '-rw-r - r - sollten gut funktionieren. – JakeGould

26

Nach AuthUserFile, müssen Sie den vollständigen Pfad zu Ihrer Passwort-Datei liefern, nicht den relativen Pfad von DocumentRoot, wenn es absolut ist (das heißt mit einem Schrägstrich beginnen).

The AuthUserFile directive sets the name of a textual file containing the list of users and passwords for user authentication. File-path is the path to the user file. If it is not absolute, it is treated as relative to the ServerRoot.

Beachten Sie, dass ServerRoot ist nicht DocumentRoot.

Wenn DocumentRoot/var/www ist und die Passwort-Datei ist /var/www/webroot/.htpasswd, müssen Sie

AuthUserFile /var/www/webroot/.htpasswd 

in der .htaccess Datei sagen.


Sie können über den absoluten Pfad mit einem kleinen PHP-Skript, z.

<?php 
echo "Absolute path: ", getcwd(); 

Setzen Sie diese in das Verzeichnis, in dem Sie die .htpasswd Datei suchen möchten, und es mit http://www.example.com/path/to/test.php

nennen Vergessen Sie nicht, um das Skript zu entfernen, wenn Sie fertig sind.


sagte, dass Sie nicht Ihr Passwort-Datei überall zugänglich in Ihrem DocumentRoot setzen sollte. Stellen Sie es besser an einen Ort, der nicht aus dem Internet erreichbar ist, d. H. /etc/apache2/htpasswd oder wo immer es Ihnen passt.

+3

Das hat für mich funktioniert. – cmann

+2

Um das hinzuzufügen: Der vollständige Pfad ist nicht der gleiche wie Ihr FTP-Pfad. Ihr FTP könnte '12.34.567.89/ ' anzeigen, während der tatsächliche Pfad '/ var/www/domain.com' sein könnte. Dies kann in Ihrer Systemsteuerung (falls vorhanden) oder durch die Fehlerprotokolle (falls verfügbar) gefunden werden. – Sjeiti

1

Alle Standard-Antworten (vollständiger Pfad, korrektes Format usw.) funktionierten nicht für mich. Nach vielen Aufspürungen stellte ich fest, dass die Berechtigungen für den übergeordneten Ordner nicht ausreichend waren, also obwohl der Pfad in .htaccess korrekt war und die Berechtigungen für die Datei rw-rr waren, immer noch nicht, da der übergeordnete Ordner rwx-rw- war. -. Das kann schwierig sein, einen Host ausfindig zu machen, der den Zugriff auf Upstream-Ordner einschränkt.

2

Hauptgrund für diesen Fehler ist der Pfad "AuthUserFile". Ich hatte das gleiche Problem und löste es, indem ich in cpanel ging. Wenn Sie Ihren Ordner in cPanel schützen, erkennt er automatisch die Datei htpasswd.

Gehen Sie zu cPanel-> Password Protect Verzeichnisse-> Verzeichnis definieren und dann einen Benutzer erstellen. Hoffe das hilft dir.