Heizer: ErrorDocument 404 und Umlaute

Liebes Forum

Da will ich gerade ein wirklich hilfreiches 404 Dokument gestallten, und treffe auf folgendes seltsames Verhalten:

#.htaccess:
ErrorDocument 404 /errors/404.php

Wenn ich nun irgendeine URI angebe die nicht existiert, dann kommt die 404.php, wie gewünscht. Wenn aber ISO-8859-1 codierte Zeichen in der URI vorkommen, dann gibt der Server sein Standard-404 Fehler zurück.

also:
http://my.server.cc/somewhere.php
  => Meine Fehlerseite
http://my.server.cc/F&e4hler.php
  => Standard 404

Witzig wird das ganze dadurch, daß Leerzeichen (%20) schon zum erwünschten Ergebnis führen. Ich bin leider mit Server technik nicht so vertraut, und habe keine Ahnung wo ich zu suchen anfangen soll.

Danke für jede Hilfe

Heizer

  1. Hallo.

    Wenn ich nun irgendeine URI angebe die nicht existiert, dann kommt die 404.php, wie gewünscht. Wenn aber ISO-8859-1 codierte Zeichen in der URI vorkommen, dann gibt der Server sein Standard-404 Fehler zurück.

    Klingt logisch. Wenn er die Seite mit der Fehlermeldung nicht findet, weil sie anders geschrieben wird als von ihm erwartet und von dir definiert, nimmt er eben seine eigene Standardseite.
    MfG, at

    1. Hi at,

      Klingt logisch. Wenn er die Seite mit der Fehlermeldung nicht findet, weil sie anders geschrieben wird als von ihm erwartet und von dir definiert, nimmt er eben seine eigene Standardseite.

      kannst Du das bitte näher erläutern? So, wie ich Heizer verstanden habe, gibt es weder die  »somewhere.php«, noch die »F&e4hler.php« in seinem DocumentRoot. Bei ersterer wird jedoch das per .htaccess definierte ErrorDocument geliefert, bei zweiterer nicht.

      Was meinst Du mit »Seite mit der Fehlermeldung«?

      @Heizer
      bist Du sicher, dass beide Seiten mit einem 404er daherkommen?

      Gruß,
      Andreas.

      1. Hi at,

        Klingt logisch. Wenn er die Seite mit der Fehlermeldung nicht findet, weil sie anders geschrieben wird als von ihm erwartet und von dir definiert, nimmt er eben seine eigene Standardseite.

        kannst Du das bitte näher erläutern? So, wie ich Heizer verstanden habe, gibt es weder die  »somewhere.php«, noch die »F&e4hler.php« in seinem DocumentRoot. Bei ersterer wird jedoch das per .htaccess definierte ErrorDocument geliefert, bei zweiterer nicht.

        Genau so ist es! Beide gibt es nicht, aber die Fehlermeldungen sind unterschiedlich.

        @Heizer
        bist Du sicher, dass beide Seiten mit einem 404er daherkommen?

        Ja, "F&e4hler.php" führt genau zu dem 404-Fehler, den ich bekam bevor ich meine eigene 404.php angelegt habe.

        Danke euch soweit

        1. Hi,

          @Heizer
          bist Du sicher, dass beide Seiten mit einem 404er daherkommen?

          Ja, "F&e4hler.php" führt genau zu dem 404-Fehler, den ich bekam bevor ich meine eigene 404.php angelegt habe.

          hmmm - hab das gerade mal lokal probiert, kann das Problem aber nicht reproduzieren. Scheint also nicht am Sonderzeichen zu liegen (hier Apache-Version 2.0.54).

          Was sagt denn das Error-Log bei den beiden unterschiedlichen Aufrufen? Außerdem - falls Du noch weitere Sachen in der .htaccess stehen hast (rewriting o.ä.), kommentier mal alles bis auf das ErrorDocument aus und schau nach, ob es dann klappt.

          Gruß,
          Andreas.

          1. Was sagt denn das Error-Log bei den beiden unterschiedlichen Aufrufen?

            Guter Tipp, ich habe so selten etwas mit Servern zu tun, daß ich immer vergesse, daß es die gibt:

            Jetzt also mal alles ganz genau:

            #.htaccess#############################################################

            ErrorDocument 404 /~Administrator/errors/404.php

            Alles andere habe ich auskommentiert, hat nichts verändert.##########

            Im Error Log steht dann zu den entsprechenden Aufrufen:

            #http://localhost/~Administrator/somewhere.php#########################

            [Mon Jan 02 22:40:06 2006] [error] [client 127.0.0.1] script 'C:/Dokumente und Einstellungen/Administrator/Eigene Dateien/public_html/somewhere.php' not found or unable to stat

            #http://localhost/~Administrator/F%e4hler.php##########################

            [Mon Jan 02 22:44:26 2006] [error] [client 127.0.0.1] File does not exist: C:/Programme/xampp/htdocs/~Administrator

            ######################################################################

            Ist klar, daß das zweite nicht klappt, "~Administrator" ist ein Alias in der httpd.conf, das auf "public_html" von "Administrator" verweist. Ich habe es sicherheitshalber auch mal mit einem physischen Pfad in der .htaccess versucht, was auch nicht funktioniert hat. Allerdings bekomme ich dann im ersten Fall einen 500er (Serverfehler), im zweiten einen 404er. Deshalb denke ich, daß Apache gar nicht erst bis zur .htaccess kommt, daß also das sonderzeichen in der URL alles richtig durcheinander bringt. Hat das vielleicht wieder mal was mit windows zu tun?

            Danke soweit

            Heizer

            1. Hi,

              Hat das vielleicht wieder mal was mit windows zu tun?

              arbeitest du gerade lokal? Wenn ja: schon mal auf dem Server ausprobiert?

              Schönen Sonntag noch!
              O'Brien

              --
              Frank und Buster: "Heya, wir sind hier um zu helfen!"
      2. Hallo.

        kannst Du das bitte näher erläutern?

        Ich hatte die Problemstellung missverstanden.
        MfG, at

  2. Hi,

    http://my.server.cc/F&e4hler.php

    Wirklich mit dem Ampersand?
    Für einen URL-codierten Umlaut müßte es ein Prozent sein.

    Der Server interpretiert diese Url vermutlich als

    my.example.org/F

    und benutzt e4hler.php als Querystring

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    Schreinerei Waechter
    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. Hi MudGuard,

      Der Server interpretiert diese Url vermutlich als

      my.example.org/F

      und benutzt e4hler.php als Querystring

      Häh? ;-) Wieso sollte er das tun?

      Gruß,
      Andreas.