powtac: .htaccess bei Fehler an 404.php?fehler=%{Referer} weiterleiten?

Hi Zusammen,
ich möchte bei einem 404 Fehler die Fehlerhafte URL an meine Errorseite 404.php weitergeben.

Wie kann ich dies machen mit Apache, und .htaccess?

Ich stelle es mir irgendwie so vor in der .htaccess (tut aber nicht):

ErrorDocument 404 404.php?fehler=%{Referer}

Gruß Simon

  1. Hallo Simon,

    Wie kann ich dies machen mit Apache, und .htaccess?

    Ja, genau das.

    Ich stelle es mir irgendwie so vor in der .htaccess (tut aber nicht):

    ErrorDocument 404 404.php?fehler=%{Referer}

    Oh, das sieht so aus als ob da gleich ne Menge Fehler sind:
    Bitte überprüfe mal ob die Scriptdatei nicht mit RootVerzeichnis angegeben werden muß, /404.php (wenn sie denn im Root ist)

    Dann dieses ?fehler=%{Referer} ist unbrauchbar, und Du brauchst das doch auch nicht wenn Du PHP hast. Du kannst doch innerhalb des Scriptes auf alle Variablen zugreifen. rufe mal phpinfo() auf um zu sehen was es da alles gibt.
    Und der Referer ist nicht das was Du vordegründig suchst, vermute ich mal, oder was willst Du mit mit der URL anfangen von dem der Request kam? Ich denke dich interessiert in erster Linie welche URI bei Dir verlangt wurde und nicht vorhanden ist.

    Das Apache Manual hat alles und mehr was Du brauchst.
    http://httpd.apache.org/docs/ oder http://httpd.apache.org/docs-2.0/

    Viele Grüße,
    Horst

    1. hi,

      Und der Referer ist nicht das was Du vordegründig suchst, vermute ich mal, oder was willst Du mit mit der URL anfangen von dem der Request kam?

      selbst wenn er das wissen wollte, könnte er immer noch _in_ der 404-seite die damit belegte variable abfragen - es hat noch kein neuer request des clients stattgefunden, also ist der beim request auf die nicht vorhandene seite mitgesendete referer auch immer noch vorhanden.

      gruss,
      wahsaga

      1. Ja genau!
        Nur das Problem ist: Wenn der Referer nicht existiert dann wird die Anfrage ja zum angegebenen ErrorDocument umgeleitet. Allerdings wird dann kein Referer übergeben weil es fehlerhaft war!
        Gruß powtac

    2. Oh, das sieht so aus als ob da gleich ne Menge Fehler sind:
      Bitte überprüfe mal ob die Scriptdatei nicht mit RootVerzeichnis angegeben werden muß, /404.php (wenn sie denn im Root ist)

      OK, ist klar.

      Dann dieses ?fehler=%{Referer} ist unbrauchbar, und Du brauchst das doch auch nicht wenn Du PHP hast. Du kannst doch innerhalb des Scriptes auf alle Variablen zugreifen. rufe mal phpinfo() auf um zu sehen was es da alles gibt.

      Mir ist klar dass "?fehler=%{Referer}" falsch ist, aber so ungefähr soll es aussehen.

      Und der Referer ist nicht das was Du vordegründig suchst, vermute ich mal, oder was willst Du mit mit der URL anfangen von dem der Request kam? Ich denke dich interessiert in erster Linie welche URI bei Dir verlangt wurde und nicht vorhanden ist.

      Ja, richtig, aber der Referer wird nicht übergeben wenn es eine fehlerhafte Anfrage war (weil es ja genaugenommen kein Referer dafür gibt!!!).

      Die Frage sollte vielleicht so lauten: Wie kann ich die fehlerhafte URI an das ErrorDocument übergeben? Die URI, welche ins error.log geloggt wird.

      Gruß powtac

      1. use Mosche;

        Die Frage sollte vielleicht so lauten: Wie kann ich die fehlerhafte URI an das ErrorDocument übergeben? Die URI, welche ins error.log geloggt wird.

        Schau dir doch mal die Ausgabe von phpinfo() an. Ich bin mir ziemlich sicher, daß es einen Umgebungsvariable gibt, die den Wert der abgefragten Datei enthält. Dies wird _nicht_ der Referer sein, der ist für was anderes gut.

        use Tschoe qw(Matti);

        --
          Anyone who quotes me in their sig is an idiot. -- Rusty Russell.
        1. use Mosche;

          Die Frage sollte vielleicht so lauten: Wie kann ich die fehlerhafte URI an das ErrorDocument übergeben? Die URI, welche ins error.log geloggt wird.

          Schau dir doch mal die Ausgabe von phpinfo() an. Ich bin mir ziemlich sicher, daß es einen Umgebungsvariable gibt, die den Wert der abgefragten Datei enthält. Dies wird _nicht_ der Referer sein, der ist für was anderes gut.

          Schon gemacht es gibt keine (PHP) Variable für "fehlerhafte_anfrage.php" o.ä!!! Weil es wie gesagt kein Referer dafür gibt!

          use Tschoe qw(Matti);

          1. hi,

            Schon gemacht es gibt keine (PHP) Variable für "fehlerhafte_anfrage.php" o.ä!!!

            nein, aber es gibt eine variable für "urspünglich vom client gesendete anfrage". und die ist auch immer noch vorhanden.

            Weil es wie gesagt kein Referer dafür gibt!

            kommst du schon wieder mit diesem unsinn?
            warum bitte stellst du dich derart lernresistent an? - anstatt endlich mal einzusehen, dass der referer mit dem, wo von du redest, _absolut NULL_ zu tun hat!

            gruss,
            wahsaga

            1. use Mosche;

              anstatt endlich mal einzusehen, dass der referer mit dem, wo von du redest, _absolut NULL_ zu tun hat!

              Außer er hat einen Link auf einer Seite gedrückt, der auf sich selbst zeigt, und die Ressource wurde unterdessen (zwischen dem Laden der Seite und dem drücken des Links) gelöscht. :-) *SCNR*

              use Tschoe qw(Matti);

              --
                Anyone who quotes me in their sig is an idiot. -- Rusty Russell.
            2. kommst du schon wieder mit diesem unsinn?
              warum bitte stellst du dich derart lernresistent an? - anstatt endlich mal einzusehen, dass der referer mit dem, wo von du redest, _absolut NULL_ zu tun hat!

              OK, eingesehen, da habe ich vielleicht etwas falsch verstanden. Aber soweit ich es sehe, gibt es keine(!) Variable um die ursprüngliche Anfrage auszulesen. Wenn ja, wie übergebe ich diese an mein ErrorDokument?

              1. Hallo,

                Aber soweit ich es sehe, gibt es keine(!) Variable um die ursprüngliche Anfrage auszulesen.

                komisch, dass das bei mir mit $_SERVER['REQUEST_URI'] immer funktioniert hat. ;)

                Jonathan

                --
                ss:| zu:} ls:} fo:| de:> va:} ch:} n4:( rl:( br:^ js:{ ie:{ fl:{ mo:)
      2. hi,

        Ja, richtig, aber der Referer wird nicht übergeben wenn es eine fehlerhafte Anfrage war (weil es ja genaugenommen kein Referer dafür gibt!!!).

        natürlich gibt es auch für solche aufrufe einen referer - allerdings scheinst du nicht zu wissen, was der referer ist.

        Die Frage sollte vielleicht so lauten: Wie kann ich die fehlerhafte URI an das ErrorDocument übergeben? Die URI, welche ins error.log geloggt wird.

        befolge Mattis tipp, und rufe in deiner 404-seite mal phpinfo() auf.
        da solltest du den gesuchten wert eigentlich ausfindig machen können.

        gruss,
        wahsaga