Apache schreibt keine 404 in access.log (htaccess Problem?)
Michael Keller
- webserver
Hallo,
Ich habe im htaccess-File eigenen Fehler-Seiten definiert. So auch für den 404-Fehler.
Jetzt sehe ich im Log-File des Apache aber keine 404-errors mehr. Beim Aufruf von http://www.domain.com/gibtesnicht werde ich zwar richtig auf die Fehlerseite geleitet, im error.log gibt es einen "File does not exist"-Eintrag, aber in der access-log steht nur:
IP - - [Zeit] "GET /gibtesnicht HTTP/1.1" 302 5 "-" "Client"
Das wäre ja nicht so schlimm, nur dass die Auswertung der Statistik etwas verfälscht wird und ich nicht bemerke, wenn ein Pfad oft zu Fehlern führt.
Weiss jemand, ob das wirklich nur an der htaccess-Datei liegt, oder wie ich das ändern kann?
mfg
Michael
hallo,
Jetzt sehe ich im Log-File des Apache aber keine 404-errors mehr. Beim Aufruf von http://www.domain.com/gibtesnicht werde ich zwar richtig auf die Fehlerseite geleitet, im error.log gibt es einen "File does not exist"-Eintrag, aber in der access-log steht nur: IP - - [Zeit] "GET /gibtesnicht HTTP/1.1" 302 5 "-" "Client"
Das wäre ja nicht so schlimm, nur dass die Auswertung der Statistik etwas verfälscht wird und ich nicht bemerke, wenn ein Pfad oft zu Fehlern führt.
Weiss jemand, ob das wirklich nur an der htaccess-Datei liegt, oder wie ich das ändern kann?
kommt drauf an was in der htaccess geschrieben ist.Jenachdem wird 404 überhaubt nicht geschrieben im error log wenn ein dementsprechender eintrag steht in der htaccess,weil dateien ,die nicht gefunden werden direkt per htaccess umgeleitet werden. Soviel ich weiss heisst 302 gefunden,das heisst die "gibt es nicht" datei gibts zwar nicht aber er hat etwas ähnliches gefunden,worauf Du beim aufruf einer datei eine seite siehst vom server generiert die dann auf eine ähnliche datei verweist. Grüsse vom Alain
Hallo
Danke für die Ausführungen!
Du hast mich auf den springenden Punkt aufmerksam gemacht! Ich habe im der htaccecss auf /404r.php verlinkt und dort wird man gleich per Header(Localtion:...) weiter geschoben. Deshalb hat der Apache wohl das Gefühl, das Richtige sei doch gefunden worden.
Werde das umbasteln :)
mfg
Michael
Moin!
Du hast mich auf den springenden Punkt aufmerksam gemacht! Ich habe im der htaccecss auf /404r.php verlinkt und dort wird man gleich per Header(Localtion:...) weiter geschoben. Deshalb hat der Apache wohl das Gefühl, das Richtige sei doch gefunden worden.
Nicht unbedingt. Du hast in der .htaccess zwei Möglichkeiten, eine eigene Fehlerseite zu definieren:
1. ErrorDocument 404 /fehlerseite
2. ErrorDocument 404 http://www.example.com/fehlerseite
Die zweite Methode gibt bei einem nicht gefundenen Dokument einen Redirect auf die komplette URL aus - so _kann_ man auf Fehlerseiten auf anderen Servern verweisen. Außerdem wird im Browser in der Regel die Fehlerseiten-URL angezeigt.
Nur die erste Methode liefert dem Browser und dem Logfile den Statuscode 404 und unter der falschen URL dann die eigene Fehlerseite.
- Sven Rautenberg
Hallo Sven
- ErrorDocument 404 /fehlerseite
- ErrorDocument 404 http://www.example.com/fehlerseite
Nur die erste Methode liefert dem Browser und dem Logfile den Statuscode 404 und unter der falschen URL dann die eigene Fehlerseite.
Ich hatte aber schon vorher die erste Methode benutzt. Nur, dass ich ein File angegeben habe, das nur aus einem Header("Location:...") bestand.
Die Erklärung ist wohl, dass ich dort Location:http://www.domain.com/404.php angegeben habe und der Apache dies dann wie die zweite Methode handelt.
Noch kurz zum Grund für das ganze. Ich habe bisher immer Links, Bilder, CSS-Files u.s.w. relativ zur aktuellen Seite eingebunden. Also img/test.gif und nicht /img/test.gif. Wenn ich dann aber die Fehlerseite über http://www.domain.com/gibtes/gibtesnicht aufgerufen habe wurden keine Bilder angezeigt und das CSS-File wurde nicht gefunden. Trotzdem finde ich die version img/test.gif praktischer, da man so ganze Websites auch in Unterordner verschieben kann.
Gibt es irgendeine Möglichkeit beides unter einen Hut zu bringen? Das heisst eigentlich per htaccess zwar den Besucher wirklich auf http://www.domain.com/404.php zu lenken und trotzdem ein sauberes Fehler-Logging zu haben. Wenn möglich ohne in jeden Unterordner eine eigenen htaccess-Datei zu legen.
Grüsse aus der Schweiz
Michael
Moin!
Noch kurz zum Grund für das ganze. Ich habe bisher immer Links, Bilder, CSS-Files u.s.w. relativ zur aktuellen Seite eingebunden. Also img/test.gif und nicht /img/test.gif. Wenn ich dann aber die Fehlerseite über http://www.domain.com/gibtes/gibtesnicht aufgerufen habe wurden keine Bilder angezeigt und das CSS-File wurde nicht gefunden. Trotzdem finde ich die version img/test.gif praktischer, da man so ganze Websites auch in Unterordner verschieben kann.
Das ist mehr oder weniger logisch. Grundlage für die URL, von der aus der Browser relativ auf Bilder etc. zugreift, ist die nicht gefundene URL. Das bedeutet für deine Fehlerseite aber, dass sie irgendwie wissen muß, welche URL angefordert wurde, damit sie die relativen Links passend setzen kann.
Oder eben: Du verwendest für die Fehlerseite absolute URLs mit / zu Beginn. Das dürfte für die Fehlerseite zu verschmerzen sein, denn so viel hin- und hergeschoben wird die sicherlich nicht.
Gibt es irgendeine Möglichkeit beides unter einen Hut zu bringen? Das heisst eigentlich per htaccess zwar den Besucher wirklich auf http://www.domain.com/404.php zu lenken und trotzdem ein sauberes Fehler-Logging zu haben. Wenn möglich ohne in jeden Unterordner eine eigenen htaccess-Datei zu legen.
Ich habe eigentlich keinerlei Probleme, mit absoluten Pfaden und gewöhnlicher eigendefinierter Fehlerseite zu arbeiten. Das funktioniert prima. Ein Redirect ist wirklich nur notwendig, wenn du relative Pfade zwingend benutzen willst und die auch funktionieren sollen.
- Sven Rautenberg
Hallo nochmals,
Oder eben: Du verwendest für die Fehlerseite absolute URLs mit / zu Beginn. Das dürfte für die Fehlerseite zu verschmerzen sein, denn so viel hin- und hergeschoben wird die sicherlich nicht.
Dies werde ich wohl tun. Lässt sich ja - soweit PHP erlaubt ist - perf config-File erledigen!
Ich habe eigentlich keinerlei Probleme, mit absoluten Pfaden und gewöhnlicher eigendefinierter Fehlerseite zu arbeiten. Das funktioniert prima. Ein Redirect ist wirklich nur notwendig, wenn du relative Pfade zwingend benutzen willst und die auch funktionieren sollen.
Werds ab jetzt auch mit absoluten Angaben machen.
Vielen Dank für die Erklärungen!
Gruss Michael