... hallo nochmal,
Ja. Ich kann einen 404er senden, zusammen mit
einer Redirection via "Location:".
Das ist aber nicht nach Standard, oder?
Viel schlimmer: Die Browser verstehen es nicht.
Weia, das muß wieder raus.
ich habe gerade noch etwas gebastelt.
Das ist der Grund dafür, wieso der 404-Handler in
gzip_cnc als URL definiert ist und nicht als Pfad.
Genau das gibt es so nicht mehr.
Die Variable für den 404-Handler kann bei mir nun
_wahlweise_ einen URL (beginnend mit "http:") _oder_
einen Dateinamen (alles andere) enthalten.
1. Ist das ein URL, dann sendet gzip_cnc eine HTTP-
302-Weiterleitung dorthin, hängt jedoch den URL
der ursprünglich angeforderten Seite als Parameter
"url" an den 404-handler-URL dran.
Wenn dies also ein Programm ist (oder auch nur ein
SSI-Dokument), kann es diesen Parameter extrahieren
und auswerten.
2. Ist es kein URL, dann liefert gzip_cnc den Inhalt
dieser Datei selbst aus (falls das klappt), und
zwar mit einem HTTP-Statuscode von 404.
Der kommt auch so bei den Browsern an; lustigerweise
schreibt der Apache allerdings einen Statuscode von
200 (!) in sein access_log (keine Ahnung, wieso).
3. Hat das nicht geklappt oder war kein Error-Handler
angegeben, dann sendet gzip_cnc sein eigenes klei-
nes Fehlerdokument (_mit_ dem Namen des angeforder-
ten URL), ebenfalls mit HTTP-Statuscode 404.
Auf diese Weise kann der Benutzer wählen:
a) Benötigt er zur Fehlerbehandlung eine Funktion des
Webservers (was z. B. bei mir selbst der Fall ist:
Mein 404-Handler möchte eigentlich gerne language
negotiated werden), dann muß er sich mit der 302-
Weiterleitung zufrieden geben.
b) Reicht ihm jedoch ein statisches Dokument, dann kann
dieses mit dem korrekten HTTP-Status 404 ausgelie-
fert werden.
Schön finde ich das alles nicht (zumal ich jetzt noch
die Dokumentation entsprechend umschreiben muß) ...
aber besser kriege ich es im Moment nicht hin.
Immerhin funktioniert es nun wieder mit allen wesent-
lichen Browsern.
Dafür, daß dieser Handler so wenige Informationen vom
Apache kriegt, muß er ganz schön viel HTTP machen ...
gnlpfts.
Viele Grüße
<img src="http://www.schroepl.net/projekte/gzip_cnc/gzip_cnc.gif" border=0 alt=""> Michael