FrankS: .htaccess Zugriff auf spezielle Seiten

Beitrag lesen

Hallo ProTc!

User1 kann aber nicht auf die Seite von User2 zugreifen ohne gültige Zugangsdaten und umgekehrt.
Wie kann ich das mit .htaccess realisieren?

Nur mit .htaccess nicht (wenn doch, korrigiert mich bitte). 2 Varianten als Beispiel:

1. Variante mit CGI:
Du schützt ein CGI-Script per .htaccess. Wird dieses Script aufgerufen, wird zunächst mal die Passwortabfrage gemacht, dann, wenn der User authorisiert ist, das Script gestartet. Im Script fragst Du die Variable  $ENV{'REMOTE_USER'} ab und verzweigst zu der userspezifischen Seite. Diese Seite sollte in einem extra für den User eingerichtetem Verzeichnis liegen und wiederum eine .htaccess enthalten, die auf eine .htpasswd zeigt, in der nur username:pwd von genau dem einen User drinsteht. Da der User schon authorisiert ist, bekommt er seine Seite trotz anderer .htaccess ohne 2. PW-Abfrage zu sehen. Mit der .htaccess im Userverzeichnis verhinderst Du, das andere User die Seite direkt aufrufen.
Andere Variante: Du baust die UserSeite(n) in Deinem Script je nach User dynamisch zusammen.

(Weil ich gerade Lust dazu habe, ein einfaches Script.) Es leitet zu einer index.htm im entsprechenden Userverzeichnis weiter:

#!/usr/bin/perl
$new_location="/pfad/zu/user/seiten/$ENV{'REMOTE_USER'}/index.htm";
&not_allowed unless $ENV{'REMOTE_USER'};
print "Status: 302 Found\n";
print "Location: $new_location\n";
print "URI: <$new_location>\n";
print "Content-type: text/html\n\n";
print "<html><body>The page you requested can be found <a href="$new_location">here</a>.</body></html>";

wenn kein Remote User angegeben, sicher ist sicher ;-)

sub not_allowed {
print "Content-type: text/html\n\n";
print "<html><head><title>Access denied</title></head>";
print "<body>";
print "<H1>Access denied</H1>";
print "You are not authorized to read this site!<P>";
print "Bye!";
print "</body>";
print "</html>";
exit;
}

2. Variante ohne CGI (Voraussetztung: SSI):
Du legts in Dein geschütztes Verzeichnis eine index.shtml mit folgendem Inhalt. Damit wird sofort weitergeleitet. Für User, deren Browser die Weiterleitung nicht unterstützt, gibts noch einen Link auf der Seite.

<html>
<head>
<meta http-equiv="refresh" content="0;URL=http://www.domain.de/dein/pfad/<!--#echo var="REMOTE_USER"-->/index.htm">
</head>
<body>
The page you requested can be found
<a href = "http://www.domain.de/dein/pfad/<!--#echo var="REMOTE_USER"-->/index.htm">here</a>.
</body>
</html>

Allerdings sollte auch hier in den Userverzeichnis eine entsprechende .htaccess liegen (Grund siehe oben).

Gruß Frank