Harry: Apache / ErrorDocument / LogFiles

Beitrag lesen

Holladiewaldfee,

Als Server verwende ich Apache2.
Genauer bitte, und auch die Plattform angeben ...

Man FreeBSD, mal Linux, mal WinXP ... ;-)
Apache 2.0.46.
Sollte wenn möglich aber auch mit 1.3.2x laufen.

Glaub mir: so "fröhlich" ist er dabei gar nicht.

Och .. ich dachte ich mach ihm eine Freude, wenn er auch mal was
sagen darf ;-)

Indem du ihm sagst, was er überhaupt und wie ins log schreiben
soll? Wie hast du denn bisher deine logfiles in der httpd.conf
konfiguriert?

Default. Prinzipell hat das ja auch nichts zu sagen, wenn, dann
sollte sich die Sache über eine htaccess-Datei regeln lassen, ganz
einfach aus dem Grund, daß nicht jeder, der das System nachher
einsetzt (ich selbst eingeschlossen) auf dem Server, auf dem er es
einsetzt, das Recht hat, in der httpd.conf rumzufummeln. Zu
einem "AllowOverride FileInfo" lassen sich die meisten Admins dann
ja grade noch überreden, aber zu "Änder mal bitte was am Log-
Verhalten des Apachen" dann eher weniger.

Mir ist vollkommen klar, daß ich damit die Fehlerbehandlung
des Apachen mißbrauche
Tut mir leid, wenn ich dir diese Klarheit wieder
zumüllen/vernebeln/eintrüben muß. Gerade Apache 2.0.x sieht
ziemlich konsequent vor, daß du logfiles und Error-Meldungen
selber konfigurieren solltest/kannst/darfst.

Schon klar (oder auch nicht).

Das Problem ist: Der Apache sieht einen 404er und lässt dann auf
Grund der ErrorDocument-Direktive meine PHP-Seite dran
rumfuhrwerken. Die aber akzeptiert entweder den Fehler oder eben
nicht. Wenn sie ihn nicht akzeptiert, weil sie es besser weiß,
schickt sie einen 200er-Header los.

Das Problem ist, daß der Apache in beiden Fällen einen Eintrag ins
LogFile macht. Wenn der 200er Header aber geschickt wurde soll er
eben das _nicht_ tun, da ja dann eigentlich kein Fehler vorlag.

Also (graphisch):

User Request:    /news/42
Apache:          404
Apache:          htaccess => ErrorDocument index.php
index.php:       Umschreiben in module=news&id=42
index.php:       Anfrage an DB: Existiert Seite, die
                 module=news&id=42 erwartet?

(1) Ja
    index.php:   200 Ok
    index.php:   Angeforderte Seite abarbeiten
    Apache:      Eintrag LogFile: 404 NotFound /news/42 (*)

(2) Nein
    index.php:   Fehlerseite ausgeben
    Apache:      Eintrag LogFile: 404 NotFound /news/42

Der Fehler liegt bei (*): Eben diese Zeile soll _nicht_ ausgeführt
werden!

Ciao,

Harry

--
  Man weiß erst was man hatte, wenn man es verloren hat.
  Intelligenz ist nicht zwingend etwas positives.