Harry: Apache / ErrorDocument / LogFiles

Beitrag lesen

Holladiewaldfee,

wie schon öfters mal angeführt arbeite ich zur Zeit an einem CM-
System mit allerlei Schnickschnack. Ich würde ja gerne den Thread
verlinken, wo ich das schonmal alles erklärt habe, find ihn aber ums
Verrecken nicht mehr. Ist aber auch nicht so wichtig.

Als Server verwende ich Apache2.

Eines der Module in meinem Framework ist dafür zuständig, blöde URLs
wie z.B. bla.php?module=news&id=42&unwichtiges=zeug in "merkbare"
und "suchmaschinenverträgliche" umzuwandeln, also /news/42.

Da das ganze dynamisch gehen muß, möchte ich (auch aus
Portierungsgründen) nur ungerne mod_rewrite verwenden. Stattdessen
habe ich eine htaccess-Datei erstellt mit

ErrorDocument 404 /index.php?action=rewrite

Soll heißen: Immer wenn eine Seite nicht gefunden wird versucht das
rewrite-Modul die URL so umzuschreiben, daß was (aus Sicht des
Scriptes) sinnvolles rauskommt.

Beispiel:
Ein User fordert /news/43 an.
Apache stellt fest, daß das Verzeichnis nicht existiert und ruft
index.php?action=rewrite auf. Die PHP Seite isoliert den Querystring
aus $_SERVER['REDIRECT_QUERY_STRING'] und den ursprünglichen Pfad
aus $_SERVER['REDIRECT_URL'] und versucht, was sinnvolles draus zu
basteln. Anschliessend schaut sie in einer Datenbank nach, ob diesem
neuen String eine Seite zugeordnet ist.

Wenn nein wird eine Fehlermeldung ausgegeben und der Käse ist
gegessen.

Wenn ja schicke ich ein "HTTP/1.0 200 Ok" hinterher und gebe die
richtige Seite aus. Das Problem ist aber: Der Apache lässt sich
durch den zusätzlichen Header nicht beeindrucken und müllt mir
fröhlich mein LogFile zu.

Wie also bringe ich den Apachen dazu, wenn ein 200er-Header gesendet
wurde, keinen Eintrag ins LogFile zu schreiben?

Mir ist vollkommen klar, daß ich damit die Fehlerbehandlung des
Apachen mißbrauche und damit etwas anstelle, für das sie nie gedacht
war. Gibt es vielleicht noch einen anderen Weg (außer mod_rewrite),
auf dem ich das Geschilderte verwirklichen kann? Oder renne ich
dauernd mit dem Kopf an die Wand am Ende der Einbahnstraße?

Vielen Dank schonmal.

Ciao,

Harry

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