[.htaccess] 404 Fehlerseite
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
besucher
browser
code
datei
download
extra ordner
fertig code
file
frage
gegensatz
geleitet code
leiten
ordner
probier
problem
relativen pfaden
textdatei
umleitung
url
weiterleitung
-
Hallo zusammen!
Also, ich habe folgendes Problem:
Ich hab auf meine Website eine Downloadseite.
Die Links zu den Downloads auf meiner eigenen Seite verweisen auf "./downloads/$dateiname".
In diesem Verzeichnis soll sich aber nicht die Datei befinden, sondern nur ein PHP-Script, dass die Datei irgendwoher läd und an den Browser ausgibt.
Ich habe also das PHP-Script erstellt (sollte soweit auch funktionieren) aber ich möchte jetzt für diesen Ordner einen 404-Verweiß auf das Script machen, sodass wenn z.B. die Datei "textdatei.txt" angefragt wird, der Server eigendlich die "downloader.php" ausführt, welche die "textdatei.txt" an den Browser gibt.
Ich habe also Folgendes in die .htaccess geschrieben:
ErrorDocument 404 ./downloader.php
Allerdings funktioniert das nicht, ich bekomme nur die Ausgabe:
./downloader.php
und das Script wird nicht ausgeführt.
Ich hoffe, ihr habt mein Problem verstanden und könnt mir helfen. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Probier es mal mit relativen pfaden.
/download.php
soweit ich noch weiß müsste es aber bei lima /home/webpages/lima-city/[username/html/ heißen - also
/home/webpages/lima-city/[username/html/download.php
-
Also die .htaccess muss bei dir im Obersten Verzeichniss, also / lagern, dann einfach nen extra Ordner Machen "error" -muss net- und fertig ^^
ErrorDocument 404 /error/404-error.html
funktioniert Prima, habs getestet ^^ -
privatecitypage schrieb:
Probier es mal mit relativen pfaden.
/download.php
soweit ich noch weiß müsste es aber bei lima /home/webpages/lima-city/[username/html/ heißen - also
/home/webpages/lima-city/[username/html/download.php
Ich werd's mal versuchen.
kill-a-teddy schrieb:
Also die .htaccess muss bei dir im Obersten Verzeichniss, also / lagern, dann einfach nen extra Ordner Machen "error" -muss net- und fertig ^^
ErrorDocument 404 /error/404-error.html
funktioniert Prima, habs getestet ^^
Ich will ja keine 404-Seite sondern nur die Umleitung in einem Ordner auf ein PHP-Script.
Wenn jmd "/downloads/textdocument.txt" anfragt, dass dann die "downloader.php" aufgerufen wird, die das "textdocument.txt" zurückgibt.
EDIT:
Wenn ich
/home/webpages/lima-city/coder-0x1/html/download.php
nehme, dann bekomme ich die Ausgabe:
/home/webpages/lima-city/[username/html/download.php
Und wenn ich
/download.php
nehme dann kommte ein 404-Fehler, dass das Fehlerscript nicht gefunden wurde.
Beitrag zuletzt geändert: 22.7.2011 18:52:32 von coder-0x1 -
Warum machst du das nicht mit mod_rewrite?!
RewriteEngine On RewriteRule ^textdatei\.txt$ download.php [QSA]
-
fabo schrieb:
Warum machst du das nicht mit mod_rewrite?!
RewriteEngine On RewriteRule ^textdatei\.txt$ download.php [QSA]
Weil es nicht eine Datei sein soll, sondern beliebig viele...
Ich müsste also für jede Datei einen Eintrag in der .htaccess machen.
Außerdem mal ne Frage (ich kenne mich mit .htaccess nicht so gut aus):
Wird bei mod_rewrite eine Umleitung für den Browser gestartet, dann währe das nämlich sinnlos für mich, oder wird das wie bei ErrorDocument nur intern umgeleitet?
Beitrag zuletzt geändert: 23.7.2011 13:54:29 von coder-0x1 -
Beliebig viele sind doch auch kein Problem. Dafür ist mod_rewrite ja eigentlich gedacht :)
Zum Thema weiterleitung... Im Gegensatz zu deiner 404 Lösung handelt es sich hier tatsächlich um eine interne Weiterleitung d.h.
Gibt der Besucher textdatei.txt ein, wird intern die Datei download.php aufgerufen.
Bei deiner 404-Lösung wird der Besucher vom Browser auf download.php geleitet.
RewriteEngine On RewriteRule (.*)\.html$ download.php?file=$1 [QSA]
Dies würde beispielsweise jede Anfrage auf eine Textdatei (intern) an download.php?file=XXXX leiten. -
fabo schrieb:
Beliebig viele sind doch auch kein Problem. Dafür ist mod_rewrite ja eigentlich gedacht :)
Zum Thema weiterleitung... Im Gegensatz zu deiner 404 Lösung handelt es sich hier tatsächlich um eine interne Weiterleitung d.h.
Gibt der Besucher textdatei.txt ein, wird intern die Datei download.php aufgerufen.
Bei deiner 404-Lösung wird der Besucher vom Browser auf download.php geleitet.
RewriteEngine On RewriteRule (.*)\.html$ download.php?file=$1 [QSA]
Dies würde beispielsweise jede Anfrage auf eine Textdatei (intern) an download.php?file=XXXX leiten.
Ich habe mal gegooglet und hab folgendes gebastelt:
RewriteEngine on RewriteRule (.*)$ downloader.php?file=$1
Das funktioniert auf meinem localhost einwandfrei, auf meinem Webspace kann ich aus irgendeinem Grund die .htaccess nicht überschreiben...
Ich hab das ganze auf Grundlage von dieser Seite gamecht:
http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html
Da das ganze von deinem Vorschlag abweicht würde ich gerne mal wissen, was der Unterschied ist...
EDIT:
Noch ne Frage: was ist mit GET-Feldern? Werden die beibehalten?
Beitrag zuletzt geändert: 23.7.2011 20:00:36 von coder-0x1 -
Bei meinem Beispiel gehörte das \.html nicht hin :D
Zu deiner Frage: Siehst du doch :)
^(.*)$ downloader.php?file=$1
$1 entspricht (.*)
Sähe es z.B. so aus:
^(.*)-(.*)$
Hättest du zwei Get-Parameter... -
Hast du nen Link, wo das ganze vernünftig erklährt wird?
Außerdem noch ne Frage:
Wenn ich eine Umleitung für alle Dateien in "./downloads" mache und dann eine Umleitung für alle Dateien in z.B. "./downloads/subdir",
also so:
RewriteEngine on RewriteRule \.downloads/(.*)$ \./downloads/downloader.php?file=$1 RewriteRule \.downloads/subdir(.*)$ \./downloads/downloader.php?subdir=1&file=$1
Würde dass funktionieren? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage