DeeJTwoK
Erfahrenes Mitglied
Hallo, ich habe ein nettes Problem:
Situation:
Ich mache ein File-Management-System. Alle Scripts/Grafiken/etc, die ich dazu benötige sind in einem Ordner "/var/www/ich/filelisting". Die Dateien/Ordner, die verwaltet werden, liegen NEBEN diesem Ordner auf dem Server.
Greift ein User nun auf eine Datei zu (zB "/var/www/ich/ordner/datei.txt") wird erstmal mittels mod_rewrite zu einem Script (/var/www/ich/filelisting/showfile.php) umgeleitet, das prüft, ob der User berechtigt ist diese Datei zu sehen.
Wenn JA, dann zeige ich diese Datei mit header("Location:...") an.
Problem:
Es scheint so, als wenn die Weiterleitung mittels header(...) die mod_rewrite-Regeln erneut durchlaufen würde, was dann ja zu einer Endlosschleife führt (Fehlermeldung im Firefox: "Fehler: Umleitungsfehler - Die aufgerufene Website leitet die Anfrage so um, dass sie nie beendet werden kann.")
Kann man das überhaupt so machen? Wo liegt da der Fehler?
Also: Warum wird header("Location:..."); durch die rewrite-Rules geschickt, bzw. wie kann man das umgehen?
Mein rewrite-Script (.htaccess) liegt im Ordner /war/www/ich
Im showfile siehts dann so aus (stark gekürzt, aber hoffentlich nicht weg, was den Fehler ausmacht):
Kann mir da jemand helfen?
Situation:
Ich mache ein File-Management-System. Alle Scripts/Grafiken/etc, die ich dazu benötige sind in einem Ordner "/var/www/ich/filelisting". Die Dateien/Ordner, die verwaltet werden, liegen NEBEN diesem Ordner auf dem Server.
Greift ein User nun auf eine Datei zu (zB "/var/www/ich/ordner/datei.txt") wird erstmal mittels mod_rewrite zu einem Script (/var/www/ich/filelisting/showfile.php) umgeleitet, das prüft, ob der User berechtigt ist diese Datei zu sehen.
Wenn JA, dann zeige ich diese Datei mit header("Location:...") an.
Problem:
Es scheint so, als wenn die Weiterleitung mittels header(...) die mod_rewrite-Regeln erneut durchlaufen würde, was dann ja zu einer Endlosschleife führt (Fehlermeldung im Firefox: "Fehler: Umleitungsfehler - Die aufgerufene Website leitet die Anfrage so um, dass sie nie beendet werden kann.")
Kann man das überhaupt so machen? Wo liegt da der Fehler?
Also: Warum wird header("Location:..."); durch die rewrite-Rules geschickt, bzw. wie kann man das umgehen?
Mein rewrite-Script (.htaccess) liegt im Ordner /war/www/ich
Code:
RewriteEngine on
# alles was im Verwaltunsordner liegt nicht umschreiben
RewriteRule ^filelisting/(.*)$ filelisting/$1 [L]
# Indexdatei darf natürlich so angezeigt werden
RewriteRule ^index.php$ index.php [L]
# leere Anfrage direkt auf den Ordner soll natürlich im Index enden
RewriteRule ^$ index.php [L]
# alles andere soll an das showfile-Script weitergegeben werden
RewriteRule ^(.*)$ filelisting/showfile.php?file=$1 [L]
Im showfile siehts dann so aus (stark gekürzt, aber hoffentlich nicht weg, was den Fehler ausmacht):
PHP:
<?php
$datei = $_GET["file"];
if (/*ungültige datei*/)
{
echo "ungültige datei"
exit();
}
if (/*user die rechte hat*/)
{
Header("Location:".basename($datei));
}
else
{
//Meldung ausgeben
}
?>
Kann mir da jemand helfen?