Christoph Schnauß: eigentümliches Verhalten von "ErrorDocument"

hallo Forum,

ich habe seit ein paar Tagen ein eigenartiges Verhalten meines Apache 2.0.50 auf WinXP bemerkt. Ich hab da schon sehr lange im lokalen Netz meine eigenen Fehleranzeigen laufen, insbesondere für 403, 404 und 500. Eingestellt ist das in der httpd.conf mit diesen Zeilen:
ErrorDocument 403 /error/403.htm
ErrorDocument 404 /error/404.htm
ErrorDocument 500 /error/500.htm
Die drei Seiten existieren und sind sogar valide (*g*), und mit 403 und 500 klappt auch alles ganz prima. Nur 404 tanzt aus der Reihe, ich bekomme meine eigene Seite da nicht angezeigt, auch nach Dutzenden Serverneustarts und diversen Säuberungsaktionen nicht. Es klappt jedoch, wenn ich eine absolute lokale URL angebe, also an dieser Stelle:
ErrorDocument 404 http://192.168.0.1/error/404.htm

Hat jemand eventuell eine Erklärung, warum grade die 404 nicht will, während die anderen brav und anständig das machen, was in der Apache-Doku beschrieben ist?

Grüße aus Berlin

Christoph S.

  1. hi,

    Die drei Seiten existieren und sind sogar valide (*g*), und mit 403 und 500 klappt auch alles ganz prima. Nur 404 tanzt aus der Reihe, ich bekomme meine eigene Seite da nicht angezeigt, auch nach Dutzenden Serverneustarts und diversen Säuberungsaktionen nicht.

    das hört sich irgendwie so an, als ob diese angabe an anderer stelle noch nachträglich überschrieben würde.

    Es klappt jedoch, wenn ich eine absolute lokale URL angebe, also an dieser Stelle:
    ErrorDocument 404 http://192.168.0.1/error/404.htm

    was natürlich eher ungünstig ist, weil du so einen redirect auslöst - und in der 404-datei keinen zugriff mehr auf REQUEST_URI hast (gut, wenn es eine statische html-seite ist, hast du daran vermutlich eh kein großes interesse - aber ich lasse auf meiner 404-seite auch gerne den request-URI noch mal mit ausgeben, "die angeforderte seite ordner/xy.html gibt es nicht".
    beim redirect hätte ich in dieser variablen aber nur noch "404.php" drinstehen, und zu sagen, dass es diese seite nicht gibt, wäre ja eher unsinnig :-)

    gruß,
    wahsaga

    --
    I'll try being nicer if you'll try being smarter.
    1. hallo,

      Nur 404 tanzt aus der Reihe, ich bekomme meine eigene Seite da nicht angezeigt
      das hört sich irgendwie so an, als ob diese angabe an anderer stelle noch nachträglich überschrieben würde.

      Möglich, aber ich weiß nicht, wo das passieren könnte, und an dieser Stelle sagen es mir die Serverlogs auch nicht. Ich habe nur ein bißchen an meinen virtuellen hosts herumgespielt und ihnen neuerdings endlich mal eigene ErrorLogs verpaßt, weil ich nicht mehr alles in der zentralen error.log haben wollte.
      Aber selbst wenn ich jetzt meine virtuellen Hosts weglasse, klappts mit der 404 nicht  -  403 und 500 machen es dagegen regelgemäß.

      was natürlich eher ungünstig ist, weil du so einen redirect auslöst

      Richtig. Es steht zum Beispiel im access.log auch keine 404 mehr drin, dafür aber neuerdings eine 302 und danach die 200 für die URL der Fehlerseite. Das ist nicht gewünscht.
      Belasse ich es bei
         ErrorDocument 404 /error/404.htm
      habe ich im acces.log wieder richtig die 404 stehen, aber meine 404.htm kriege ich eben nicht gezeigt.

      Grüße aus Berlin

      Christoph S.

      1. hi,

        Möglich, aber ich weiß nicht, wo das passieren könnte, und an dieser Stelle sagen es mir die Serverlogs auch nicht. Ich habe nur ein bißchen an meinen virtuellen hosts herumgespielt und ihnen neuerdings endlich mal eigene ErrorLogs verpaßt, weil ich nicht mehr alles in der zentralen error.log haben wollte.

        eingangs schriebst du, dass es mit
        ErrorDocument 404 http://192.168.0.1/error/404.htm
        funktioniert wie gewünscht.

        gilt das auch, wenn du statt der IP-adresse den servernamen angibst?

        ErrorDocument 404 http://servername/error/404.htm

        wenn das _nicht_ funktioniert, würde das m.E. doch stark auf einen "fehler" bzw. überschreiben an der stelle sprechen, wo du deine virtual_hosts konfiguriert hast.

        gruß,
        wahsaga

        --
        I'll try being nicer if you'll try being smarter.
        1. hallo,

          eingangs schriebst du, dass es mit
          ErrorDocument 404 http://192.168.0.1/error/404.htm
          funktioniert wie gewünscht.
          gilt das auch, wenn du statt der IP-adresse den servernamen angibst?

          Ja. Also es geht genauso mit
            ErrorDocument 404 http://pc1/error/404.htm

          Grüße aus Berlin

          Christoph S.

  2. Hi,

    ich habe seit ein paar Tagen ein eigenartiges Verhalten meines Apache 2.0.50 auf WinXP bemerkt. Ich hab da schon sehr lange im lokalen Netz meine eigenen Fehleranzeigen laufen, insbesondere für 403, 404 und 500. Eingestellt ist das in der httpd.conf mit diesen Zeilen:
    ErrorDocument 403 /error/403.htm
    ErrorDocument 404 /error/404.htm
    ErrorDocument 500 /error/500.htm
    Die drei Seiten existieren und sind sogar valide (*g*), und mit 403 und 500 klappt auch alles ganz prima. Nur 404 tanzt aus der Reihe, ich bekomme meine eigene Seite da nicht angezeigt, auch nach Dutzenden Serverneustarts und diversen Säuberungsaktionen nicht. Es klappt jedoch, wenn ich eine absolute lokale URL angebe, also an dieser Stelle:
    ErrorDocument 404 http://192.168.0.1/error/404.htm

    Was passiert denn, wenn Du eine nichtexistente Seite aufrufst?

    Mit welchem Browser tritt das Problem auf?
    IE zeigt manchmal Fehlerseiten nicht an, wenn sie zu kurz sind (Unter Tools - Internet Options - Advanced per "Show friendly error messages" oder so ähnlich umschaltbar)

    cu,
    Andreas

    --
    MudGuard? Siehe http://www.Mud-Guard.de/
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. hallo,

      Mit welchem Browser tritt das Problem auf?

      Mit allen drei, die ich normalerweise zum Probieren unter Windows benutze: IE 6, Opera 7.51 und Mozilla Firefox 0.9.1

      IE zeigt manchmal Fehlerseiten nicht an, wenn sie zu kurz sind

      Das ist mir bekannt. Aber alle drei Browser sagen mir bei Aufruf einer tatsächlich nichtexistenten "index.php" dasselbe: "die Seite wurde nicht gefunden".

      Übrigens verstehe ich das mit den "zu kurzen Fehlerseiten" im IE auch nicht richtig  -  genau dieselbe Seite zeigt er ja problemlos an, wenn ich sie über eine absolute lokale URL aufrufe. Und ich habe jetzt mal meine beiden anderen Seiten (für 403 und 500) exakt genauso gestaltet, sie unterscheiden sich von meiner 404er-Seite nur in der Ziffer für die Fehlernummer, sonst ist im Augenblick absolut dieselbe Anzahl von Zeichen drauf  -  zum Testen natürlich. Und die beiden bekomme ich, wenn ich entsprechende Fehler provoziere, problemlos ausgeliefert.

      Auf einer LINUX-Kiste habe ich dieses komische Problem nicht, daher ist es mir bisher nicht als "Problem" aufgefallen. Das heißt auch, wenn ich dieselben HTML-Dokumente von einem Apache ausgeben lasse, der auf GenToo läuft und den übers lokale Netz mit dem IE anfrage, passiert alles so, wie es sein soll.
      Umgekehrt übrigens auch: wenn ich von einer LINUX-Maschine meinen auf WinXP laufenden Apache falsch abfrage, kriege ich meine 404er-Seite, und die Welt ist in Ordnung. Ich habe das "Problem" ausschließlich unter Windows.

      Grüße aus Berlin

      Christoph S.

      1. Hi,

        Mit welchem Browser tritt das Problem auf?
        Mit allen drei, die ich normalerweise zum Probieren unter Windows benutze: IE 6, Opera 7.51 und Mozilla Firefox 0.9.1

        Ok, dann ist mein Verdacht der Ursache

        IE zeigt manchmal Fehlerseiten nicht an, wenn sie zu kurz sind

        also unbegründet. Denn Opera und Mozilla/Firefox zeigen dieses Verhalten nicht.

        Dann bin ich ratlos.

        cu,
        Andreas

        --
        MudGuard? Siehe http://www.Mud-Guard.de/
        Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
        1. hallo Andreas,

          Dann bin ich ratlos.

          Ich leider auch :-( Hab meinen Apache inzwischen dreimal neu gestartet und kirege das nicht in den Griff  -  übrigens macht er auch keine hartkodierte Anzeige in der Art:
            ErrorDocument 404 "<h1>Pech gehabt, so eine Ressource gibts hier nicht</h1>"

          Aber noch zu den "zu kurzen" Fehlerseiten für den IE: gibts da irgendwas, wo man das nachlesen kann? Ich habe, wenn auch nicht sehr nachdrücklich, mal schnell gegooglet, aber nix gefunden.

          Grüße aus Berlin

          Christoph S.