MichelM: 404-Fehler !

Hallo,

versuchs nochmal:

Suche eine Möglichkeit die Eingabe des Users zu parsen und zu korrigieren.

Problem bisher:

Alle phpinfo-Abfragen bringen in der error404.php nicht die Vars, die der User eingegeben hat, sondern nur die URL der 404-Datei.

auch phpinfo(INFO_VARIABLES) brachte nicht den gewünschten Erfolg.

Experimente mit der JavaScript History klappten auch nicht. Wäre ja auch bedenklich, dass man die History (den Verlauf) des Clients abfragen könnte.

Gibt es den eine andere Möglichkeit als  Error Document 404 /error404.php beim Apache-Server (LINUX) mit PHP,CGI, SSI etc. ?

Ziel ist es den User bei einer Fehleingabe auf die richtige Seite umzulenken.
User gibt URL falsch ein: http://einedomain.de/Scripts/scritps.html
Fehler 1: Scripts Grossbuchstabe (case-sensitive)
Fehler 2: scritps statt scripts
Apache lenkt auf error404.php um
und error404.php soll dann auf

http://einedomain.de/scripts/scripts.html umgelenken oder in Listenform Alternativen vorschlagen (ähnliche Verzeichnis und Dateinamen) und die richtige Datei suchen können.
Ein Direktory oder sitemap möchte ich nicht ausgeben ..

Mindestens soll aber Case-Sensitive abgeschaltet werden.

THX für die Vorschläge ;-)

Michael

  1. Hi,

    Alle phpinfo-Abfragen bringen in der error404.php

    wie _exakt_ rufst Du diese auf?

    nicht die Vars,

    Trenne Dich bitte von dem Irrtum, dass vom User aus irgendwelche Variablen überliefert wurden. Er sendet Parameter, nichts anderes.

    auch phpinfo(INFO_VARIABLES) brachte nicht den gewünschten Erfolg.

    Dann tippe ich entweder auf einen POST-Request, bei dem Du nicht den Hauch einer Chance hast, oder auf eine falsche ErrorDocument-Angabe, oder darauf, dass Du in phpinfo() nicht die richtige Umgebungsvariable findest.

    Experimente mit der JavaScript History klappten auch nicht.

    Nein, die bringt Dir auch nicht das geringste.

    Wäre ja auch bedenklich, dass man die History (den Verlauf) des Clients abfragen könnte.

    Eben :-) Zudem weiß JavaScript nicht, dass innerhalb des Servers ein Redirect stattgefunden hat.

    Gibt es den eine andere Möglichkeit als  Error Document 404 /error404.php beim Apache-Server (LINUX) mit PHP,CGI, SSI etc. ?

    ErrorDocument ist mit Abstand die beste Methode.

    User gibt URL falsch ein: http://einedomain.de/Scripts/scritps.html
    Fehler 1: Scripts Grossbuchstabe (case-sensitive)
    Fehler 2: scritps statt scripts

    Ein Fehler hätte bereits genügt ;-)

    und error404.php soll dann auf
    http://einedomain.de/scripts/scripts.html umgelenken

    Das musst Du dann so geschickt machen, dass die URL-Parameter (GET ist hierfür required - okay, HEAD ginge auch ;-) aus der Redirect-URI (Zaunpfahl) der URL hinzugefügt werden.

    oder in Listenform Alternativen vorschlagen (ähnliche Verzeichnis und Dateinamen) und die richtige Datei suchen können.

    Ich glaube, es gibt bei PHP eine soundex()-Funktion.

    Cheatah

  2. Moin!

    mod_speling (http://httpd.apache.org/docs-2.0/mod/mod_speling.html) ist dein Freund ;-)

    Viele Gruesse,

    Einbecker

  3. Moin!

    Problem bisher:

    Alle phpinfo-Abfragen bringen in der error404.php nicht die Vars, die der User eingegeben hat, sondern nur die URL der 404-Datei.

    Dürfte auch logisch sein - die Umlenkung von der echten, aber nicht vorhandenen Seite zu 404 dürfte sehr wahrscheinlich den GET- oder POST-Request nicht mitschleppen.

    Wenn du mit GET arbeitest, kriegst zu die URL-Parameter vielleicht in der REDIRECT-URL. Die kannst du mit Stringfunktionen dort abschneiden und dann interpretieren. PHP kennt dazu auch so gefährliche Funktionen wie parse_str() - gefährlich deshalb, weil sie ohne weitere Prüfung (für die bist du verantwortlich!) Variablen aus dem Parameterstring erzeugt, die eventuell vorhandene Variablen deines Skripts überschreiben. Also am besten nur den String isolieren und ggf. an generierte Links wieder dranhängen, wenn du passende Seiten gefunden hast.

    auch phpinfo(INFO_VARIABLES) brachte nicht den gewünschten Erfolg.

    Genauer hinsehen. HTTP_SERVER_VARS oder HTTP_ENV_VARS haben interessante Informationen.

    http://einedomain.de/scripts/scripts.html umgelenken oder in Listenform Alternativen vorschlagen (ähnliche Verzeichnis und Dateinamen) und die richtige Datei suchen können.
    Ein Direktory oder sitemap möchte ich nicht ausgeben ..

    Mindestens soll aber Case-Sensitive abgeschaltet werden.

    Dazu gibt es im Archiv eine Diskussion: http://selfsuche.teamone.de - Stichwörter: "Javascript", "String", "ähnlich". Nur in 2002 suchen lassen.

    - Sven Rautenberg

  4. Suche eine Möglichkeit die Eingabe des Users zu parsen und zu korrigieren.

    Problem bisher:

    Alle phpinfo-Abfragen bringen in der error404.php nicht die Vars, die der User eingegeben hat, sondern nur die URL der 404-Datei.

    Merkwürdig. Was meinst Du mit "Vars, die der User eingegeben hat"? Welche Variablen soll er denn eingeben?

    Die falsche Adresse steht jedenfalls in REDIRECT_URL oder HTTP_SERVER_VARS["REDIRECT_URL"]. Ich bin damit ganz gut zu Rande gekommen: http://kino-fahrplan.de/programm/ufo.

    Gruß,
      soenk.e

  5. Hallo,

    Danke für die Antworten. Werde mal eine Kombination der Vorschläge von Euch versuchen, damit eine PHP-Variante von javascript:history.previous klappt.