Sabine: Error404 Dokument

Hallo,
wenn ich mit der .htaccess ein eigenes Error 404-Dokument festlege,
gibt mir dann der Server in einer globalen PHP-Variable die falsche Anforderung, d.h. den Dateinamen der Seite, die angefordert aber nicht gefunden wurde, zurück?
Ich entferne auf meiner Website diverse Seiten und möchte nun, wenn jemand versucht eine dieser gelöschten Seiten aufzurufen, eine Reaktion ausführen, die davon abhängt, welche Seite versucht wurde aufzurufen.
Habe ich mich verständlich ausgedrückt ? :-)

Gruß
Sabine

  1. Hallo Sabine,

    wenn ich mit der .htaccess ein eigenes Error 404-Dokument festlege,
    gibt mir dann der Server in einer globalen PHP-Variable die falsche Anforderung, d.h. den Dateinamen der Seite, die angefordert aber nicht gefunden wurde, zurück?

    ja, schau mal was $_SERVER['REQUEST_URI'] steht.

    Grüße aus Nürnberg
    Tobias

  2. Hallo Sabine,

    wenn ich mit der .htaccess ein eigenes Error 404-Dokument festlege,
    gibt mir dann der Server in einer globalen PHP-Variable die falsche Anforderung, d.h. den Dateinamen der Seite, die angefordert aber nicht gefunden wurde, zurück?
    Ich entferne auf meiner Website diverse Seiten und möchte nun, wenn jemand versucht eine dieser gelöschten Seiten aufzurufen, eine Reaktion ausführen, die davon abhängt, welche Seite versucht wurde aufzurufen.

    Wie du genau das realisieren kannst, wird detailliert unter http://aktuell.de.selfhtml.org/tippstricks/php/alteurls/ beschrieben.
    Die Variable heißt übrigens $_SERVER['REDIRECT_URL'].

    Viele Grüße
      Patrick Canterino

    --
    "Ey, die haben mich bescheißt, wir bescheißen eine andere. Kreislauf, verstehst du?" (Hilmi Sözer in "Bang Boom Bang")
    1. Super! Genau das habe ich gesucht.
      Danke euch

  3. Hi,

    wenn ich mit der .htaccess ein eigenes Error 404-Dokument festlege,
    gibt mir dann der Server in einer globalen PHP-Variable die falsche Anforderung, d.h. den Dateinamen der Seite, die angefordert aber nicht gefunden wurde, zurück?

    Das hängt davon ab, wie Du das ErrorDocument definierst.

    Wenn es eine serverrelative URL ist (also mit / beginnt), sollte die Original-URL in REQUEST_URI stehen.
    Wenn es eine absolute URL ist (http://...), dann wird dort die URL der Fehlerseite stehen (außerdem bekommt der Client dann keinen 404-Status gesendet).

    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. Hallo MudGuard.

      Wenn es eine absolute URL ist (http://...), dann wird dort die URL der Fehlerseite stehen (außerdem bekommt der Client dann keinen 404-Status gesendet).

      Kleine Nebenfrage: Sehe ich das richtig, dass es nicht möglich ist, den Response Header mittels PHP auszulesen?

      Gruß, Ashura

      --
      Selfcode: sh:( fo:) ch:? rl:( br:^ n4:& ie:{ mo:) va:) de:> zu:) fl:( ss:| ls:[ js:|
      Try it: Become an Opera Lover in 30 days
      Meine Browser: Opera 8.0 | Firefox 1.0.3 | Lynx 2.8.3 | Netscape 4.7 | IE 6.0
      1. Hi,

        Wenn es eine absolute URL ist (http://...), dann wird dort die URL der Fehlerseite stehen (außerdem bekommt der Client dann keinen 404-Status gesendet).
        Kleine Nebenfrage: Sehe ich das richtig, dass es nicht möglich ist, den Response Header mittels PHP auszulesen?

        Der Response Header wird ja erst erzeugt vom PHP-Script.

        Bei einer absoluten URL fürs ErrorDocument bekommt der Client aber zuerst einen location-Header zusammen mit einem der 30x-Statuscodes (statt des 404) und erst wenn der Client dann das in der location genannte Dokument anfordert, kommt die Error-Seite ins Spiel.

        apache_response_headers könnte aber ggf. helfen.

        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. Hallo MudGuard.

          apache_response_headers könnte aber ggf. helfen.

          Daran habe ich mich schon versucht, aber bis auf 2 kleine Zeilen wird da nichts ausgegeben.

          Die Funktion apache_lookup_uri() ist da schon ausführlicher, gibt aber leider den Statuscode 200 zurück. (Logisch, das Errordokument wurde ja ordnungsgemäß gefunden.)

          Schade eigentlich.

          Gruß, Ashura

          --
          Selfcode: sh:( fo:) ch:? rl:( br:^ n4:& ie:{ mo:) va:) de:> zu:) fl:( ss:| ls:[ js:|
          Try it: Become an Opera Lover in 30 days
          Meine Browser: Opera 8.0 | Firefox 1.0.3 | Lynx 2.8.3 | Netscape 4.7 | IE 6.0