Matti Maekitalo: zu blöde für Verzeichnisschutz

Beitrag lesen

Tach auch.

Stell dir vor du hast eine Festplatte in deinem Computer.
Dort gibt es folgende Ordnerhierarchie:
-Meine Dokumente
--Meine Websiten-Versucher
---Website 1
----Schutzbereich

Jetzt ist in deinem Computer festgelegt, dass Leute die per HTTP auf example.com zugreifen den Inhalt des Ordners Website 1 sehen.

Wenn sie in den geschützten Bereich wollen müssten die example.com/Schutzbereich eingeben

Aber deinen Computer interessiert HTTP und die Domain nicht. Der will wissen, wo - in seiner kompletten Hierarchie gesehen - die Passwortdatei ist.

Also müsstest du für die Passwortdatei folgenden Verweis in der htaccess nehmen:
Meine  Dokumente/Meine Websiten-Versiche/Website1/Schutzbereich/.htpasswd

Ich ergänze das Beispiel mal, um das Problem deutlicher zu zeigen:
1. Es gibt einen DOCUMENT_ROOT, das ist das Verzeichnis, worin die Dateien liegen, die "üblicherweise" durch http://www.example.com/blablabla.ext aufgerufen werden können. Anders, dein Wurzelverzeichnis für die Dokumente, die der Webserver bereitstellen soll. Üblicherweise ergänze ich deswegen, da man mit URL-Rewrites (um ein Beispiel zu nennen) da so ziemlich alles hin und herbiegen kann (und ja auch nicht jeder Webserver ein Apache ist).

2. Es gibt einen SERVER_ROOT. Das ist üblicherweise das Verzeichnis, wohin der Apache installiert wurde. U.U. ist dies aber sehr zersplittert (Konfigurations-Dateien in /etc/apache2, Logs in /var/log/apache2 zum Beispiel).

3. Als drittes (außerhalb des Webserver-Kontextes) ist der von dir, Alex, absolute Pfad einer Datei. Diesen kann man sich "üblicherweise" (siehe Anmerkungen bei (1)) durch $DOCUMENT_ROOT/$PFAD_IM_WEBBROWSER ableiten, dies muss er aber nicht zwangsläufig sein.

4. Und als letzten verdächtigen hat man noch den Pfad relativ zum "FTP-Root". Dein FTP-User ist auf dein Home-Verzeichnis auf dem Webserver (dem Computer, nicht dem Dienst) "eingesperrt".

Bspw. ist dein Pfad zu deinem Document-Root /home/username/htdocs, deine .htpasswd-Datei liegt unter /home/username/htdocs/schutzverzeichnis/.htpasswd, dein FTP-Root liegt bei /home/username. In die .htaccess müsstest du /home/username/htdocs/schutzverzeichnis/.htpasswd eintragen, hochladen müsstest du sie per FTP nach /htdocs/schutzverzeichnis/.htpasswd. Relativ zum Document-Root liegt diese (wenn die Webserver-Konfiguration das abholen von .ht-Dateien erlaubt, was idR verboten wird) unter http://www.example.com/schutzverzeichnis/.htpasswd

Hier scheint es so, dass FTP-Root = Documen-Root ist. Ein guter Anhaltspunkt für den absoluten Pfad, der in 3 beschrieben wird und der in der .htaccess-Datei eingetragen werden muss, habe ich in der strato-FAQ gesehen.

Bis die Tage,
Matti