Christoph Schnauß: Apache / ErrorDocument / LogFiles

Beitrag lesen

hallo Waldfee,

Mal FreeBSD, mal Linux, mal WinXP ... ;-)
Apache 2.0.46.

Ja klar, warum frag ich auch nach :-( konnts mir ja denken.

Default. Prinzipell hat das ja auch nichts zu sagen

pah, Prinzipienreiter ...

wenn, dann sollte sich die Sache über eine htaccess-Datei regeln lassen

Richtig. Die Konfiguration für die Errormeldungen kannst du inne .htaccess schreiben, siehe http://httpd.apache.org/docs-2.0/mod/core.html#errordocument, das log-Format leider (noch) 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.

So weit ist das meines Wissens tatsächlich "default".

Das Problem ist, daß der Apache in beiden Fällen einen Eintrag ins
LogFile macht.

Ähm, wirklich?

Wenn der 200er Header aber geschickt wurde soll er eben das _nicht_ tun, da ja dann eigentlich kein Fehler vorlag.

Tut er auch nicht, jedenfalls nicht "default" (und nicht bei mir). Die 200 gehört allenfalls in die access.log

Also (graphisch):

äks ...

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 (*)

Da ist ein Denkfehler drin. Der Indianer hat ja bereits auf 404 reagiert. Daß du so gemein bist, da eine PHP-Seite zwischenzuspannen, ist ihm wurscht, und was die macht, ist ihm wohl auch wurscht. Wenn sie fertig ist, schreibt er einfach seinen Eintrag fertig, egal, was das PHP-Ding macht (ist ja möglicherweise ein neuer Prozeß).

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

Jaja, ich habs kapiert, bloß dein Apache noch nicht. Es kann tatsächlich an den Einstellungen für die logfiles liegen, da müßte sich eine "Umleitung" zu einer Index-Seite (Standard-Dokument) irgendwo bei
LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined
einbauen lassen. Hab ich aber noch nie probiert. Schau mal nach, ob dein PHP-Script den "%(Referer)" oder den "%(Usewr-Agent)" (warum eigentlich den?) neu schreiben kann. Aber da fang ich auch an zu schwimmen.

Grüße aus Berlin

Christoph S.