Komplexer Verzeichnisschutz per .htaccess

helkies

Grünschnabel
Ich hoffe mir kann hier geholfen werden. Habe schon so viele Foren durchforstet.

Problem: Ich habe einen Login Button auf meiner Seite. Ich habe 4 Unterverzeichnisse, die es mit .htaccess zu schützen gilt.
Bsp. privat, freunde, fotos, downloads.
Wenn sich ein Freund jetzt einloggt (er hat nur Passwort und Username für den Bereich "freunde"), soll die index.html im Verzeichnis freunde geöffnet werden, usw.

Ist es überhaupt möglich, mit der .htaccess, aufgrund der Eingabe eines korrekten Passwords und Usernamen zu steuern welcher Ordner zuständig ist.

Ich bin echt so langsam am verzweifeln :confused:
 
Ich habe gerade nochmal die Apache Dokumentation überflogen... und ich sehe keine Möglichkeit.

Damit das was du willst funktioniert, müsste es etwas ähnliches wie mod_alias geben. Nur eben mit der Möglichkeit auf den übermittelten Benutzernamen zu reagieren... und das gibt es (soviel ich weiß) nicht.


Um dein Ziel zu erreichen, kommst du wohl um PHP, ASP... nicht herrum.
 
Du könntst allerdings mit einer Scriptsprache Dein Problem lösen. Mit PHP, ASP oder Perl wäre das wohl kein großes Problem.
 
und wie funktioniert das mit dem %{REMOTE_USER} (Username) auf das jeweilige Verzeichnis umleiten?

Hört sich vielversprechend an? ist das schwer umzusetzen?
 
Nö, das ist eigentlich nicht schwierig.
Zuerst machst du den normalen Passwortschutz.

Dann die Rewrite-Rules für die einzelnen Benutzer...
vor dem "Rewriten" wird als Bedingung geprüft, welcher Benutzer es ist,
und ob er sich nicht schon in seinem Verzeichnis befindet

Code:
AuthName "Hallo"
AuthType Basic
AuthUserFile /blablubb/.htpasswd
require valid-user

RewriteEngine on

# Benutzer "user1" in verzeichnis "userverzeichnis1" umleiten

#Ermitteln, ob es "user1" ist
RewriteCond %{REMOTE_USER}   ^user1$
#ermitteln, ob er nicht schon in seinem Verzeichnis ist
RewriteCond %{REQUEST_URI}   !^/userverzeichnis1/
#Umleiten
RewriteRule ^(.*)$     /userverzeichnis1/ [R]


# Benutzer "angie","gerhard" und "joschka"in verzeichnis "freunde" umleiten

RewriteCond %{REMOTE_USER}   ^(angie|gerhard|joschka)$
RewriteCond %{REQUEST_URI}   !^/freunde/
RewriteRule ^(.*)$     /freunde/ [R]
 
Sorry, bin erst jetzt zum weitermachen gekommen.

Ich habe das alles jetzt in die .htaccess kopiert und natürlich die Bezeichnungen angepasst. Aber ich habe irgendwo noch einen Fehler. Ich habe im selben Ordner die Datei .htpasswd in der 4 User und die verschlüsselten Passworte stehen.
Bsp:

Werner:INY8//m5KMwIc
Manfred:69gY8YPjQXeN6
Janine:INw2mPEH.owe2
Anke:INh6DHvyejvf2

ich bekomme immer nur die Meldung:
Forbidden
You don't have permission to access /verzeichnis/login/index.html on this server.

Ich hab mir das mit mehreren Usern und Passworten aus SelfHtml angesehen und die .htpasswd nach dem Muster gestrickt. Ich weiß nicht was ich falsch gemacht habe. :confused:
 
Das Betriebssystem ist Suse Linux.

Struktur:

.../freunde/login/conni1/
.../freunde/login/ulf1/
.../freunde/login/sandra1/
.../freunde/login/bernd1/

Die .htaccess und .htpasswd liegen im Ordner /login/ und die Verzeichnisse danach sollen
geschützt sein.

Hier die .htaccess:
-----------------------------------------------------------------------------------------------------------------Anfang

AuthName "Bitte Eure Zugangsdaten eingeben"
AuthType Basic

AuthUserFile /home/www/htdocs/meinedomain.de/freunde/login//.htpasswd
require valid-user

RewriteEngine on
#-------------------------------------------------------
# Benutzer "conni" in verzeichnis "conni1" umleiten

#Ermitteln, ob es "conni" ist
RewriteCond %{REMOTE_USER} ^conni$
#ermitteln, ob er nicht schon in seinem Verzeichnis ist
RewriteCond %{REQUEST_URI} !^/conni1/
#Umleiten
RewriteRule ^(.*)$ /conni1/ [R]
#-------------------------------------------------------
# Benutzer "ulf" in verzeichnis "ulf1" umleiten

#Ermitteln, ob es "ulf" ist
RewriteCond %{REMOTE_USER} ^ulf$
#ermitteln, ob er nicht schon in seinem Verzeichnis ist
RewriteCond %{REQUEST_URI} !^/ulf1/
#Umleiten
RewriteRule ^(.*)$ /ulf1/ [R]
#-------------------------------------------------------
# Benutzer "sandra" in verzeichnis "sandra1" umleiten

#Ermitteln, ob es "sandra" ist
RewriteCond %{REMOTE_USER} ^sandra$
#ermitteln, ob er nicht schon in seinem Verzeichnis ist
RewriteCond %{REQUEST_URI} !^/sandra1/
#Umleiten
RewriteRule ^(.*)$ /sandra1/ [R]
#-------------------------------------------------------
# Benutzer "bernd" in verzeichnis "bernd1" umleiten

#Ermitteln, ob es "bernd" ist
RewriteCond %{REMOTE_USER} ^bernd$
#ermitteln, ob er nicht schon in seinem Verzeichnis ist
RewriteCond %{REQUEST_URI} !^/bernd1/
#Umleiten
RewriteRule ^(.*)$ /bernd1/ [R]

-----------------------------------------------------------------------------------------------------------------Ende

Übrigens vielen Dank für Deine bisherige Hilfe :)
 
Zuletzt bearbeitet:
Zurück