HTTP 404 Fehler abfangen, falschen Link lesen/speichern?

OP (Firma: Q3) #5964574
Wie man einen falschen bzw. nicht existierenden Link innerhalb einer 
Domain mittels .htaccess abfängt und umleitet ist ja hinreichend 
bekannt.

Leider konnte ich keine Info darüber finden, ob und wie es möglich ist, 
an Infos über den falschen bzw. nicht existierenden Link heranzukommen, 
d.h. was haben denn die Leute denn eigentlich falsch eingegeben?

Wie geht das bzw. wo finde ich Infos dazu? Danke für Tips.
Gast
Frank E. schrieb:
> was haben denn die Leute denn eigentlich falsch eingegeben

I.A. nichts, sondern er hat bloss eine extern gespeicherte veraltete URL 
angeklickt, und der Trottel von WebEntwickler hat in der Strukturierung 
seiner WebSite Fehler gemacht und sie daher zur Fehlerbehebung 
umstrukturiert und die URL unter der die Seite nun erreichbar ist 
verändert ohne dass ein Redirect ausgelöst wird.

Besonders gerne passiert das beim Merge von Firmen und damit WebSites, 
aber auch im täglichen Geschäft dummer WebEntwickler.

Merke: JEDE Änderung einer URL ohne redirect ist ein 
Nachlässigkeitsfehler des WebEntwicklers.
OP (Firma: Q3)
Joachim D. schrieb:
> HTTP_REFERER ?

Das ist, wenn nicht leer, die Adresse der Seite, in der der falsche Link 
enthalten ist. Ok, man könnte dort nachsehen.

Ich habe inzwischen weiter recherchiert und bin auf 
"$_SERVER[REQUEST_URI]" gestossen. Da sollte das nicht existierende Ziel 
drin stehen. Bin aber noch nicht zum ausprobieren gekommen ...
Gast
Ich mach das bei meiner Seite so, um zu loggen, wenn eine fehlende Seite 
aufgerufen wird (PHP):
1
$myFile = "404LOG.txt";
2
$fh = fopen($myFile, 'a') or die("can't open file");
3
fwrite($fh, $_SERVER['REQUEST_URI'] . "\n");
4
fclose($fh);
OP (Firma: Q3)
Böderweise enthält auf meinem Server das Array-Element 
$_SERVER['REQUEST_URI'] nur die eigene Fehlerseite "error.php" aber 
nicht, wie erhofft, den falschen Aufruf. Irgendwie witzlos :-(

Nachtrag: Erledigt.

Allerdings musste ich bereits in der vorgelagerten .htaccess Hand 
anlegen. Dort hats geholfen, die Variable {REQUEST_URI} als Parameter an 
den Aufruf der error.php anzuhängen. Dann schafft es dies Info bis zu 
meiner Fehlerbehandlung (inkl. GET-Parametern!). Ist wohl von der 
Server-Konfiguration abhängig.

Inhalt .htaccess:
1
ErrorDocument 404 https://www.xxx.com/yyy/error.php/?url=%{REQUEST_URI}
Gast
Ich muß jetzt schon mal blöd fragen...

Hat denn wirklich keiner von Euch Zugriff auf das stinknormale 
access/error Log vom Apache (oder Nginx)?

Da steht jeder Request drin, zusammen mit dem Statuscode und noch mehr 
Info. Ein einfacher grep nach " 404 " und man hat eine Liste aller nicht 
gefundenen URLs. Simpler geht's nicht.
OP (Firma: Q3)
bofh schrieb:
> Ich muß jetzt schon mal blöd fragen...
>
> Hat denn wirklich keiner von Euch Zugriff auf das stinknormale
> access/error Log vom Apache (oder Nginx)?
>
> Da steht jeder Request drin, zusammen mit dem Statuscode und noch mehr
> Info. Ein einfacher grep nach " 404 " und man hat eine Liste aller nicht
> gefundenen URLs. Simpler geht's nicht.

Ja klar, taugt aber nur zum Nachgucken. Liegt bei mir als 
"access_log_datum.gz". Wie soll ich das live auswerten?

Mit dem direkten Zugriff über error.php ist das 100mal einfacher, WENN 
es denn funktioniert ... aber das tut es ja nun (bei mir).
Gast
Frank E. schrieb:
> Ja klar, taugt aber nur zum Nachgucken. Liegt bei mir als
> "access_log_datum.gz". Wie soll ich das live auswerten?

darf man fragen wozu live?
bzw. wenn die seite so groß und/oder wichtig ist, dann sollte auch 
jemand da sein der mit dem server auch umgehen/ihn betreuen kann.
für eine hobby seite ist die live überwachung doch komplett fürn hugo 
(oder eine spielerei ohne tieferen sinn)...
OP (Firma: Q3)
wos woas denn i schrieb:
> Frank E. schrieb:
>> Ja klar, taugt aber nur zum Nachgucken. Liegt bei mir als
>> "access_log_datum.gz". Wie soll ich das live auswerten?
>
> darf man fragen wozu live?

Ich habe ja nun die URLs der ursprünglich aufgerufenen (nicht 
existierenden) Seiten samt Parametern. Live brauche ich sie deshalb, 
weil die Seitenaufrufe  - je nach URL und Parametern - unterschiedlich 
verteilt werden sollen.

Da schwirren auf Prospekten 'ne Menge falsch gedruckte QR-Codes in der 
Gegend herum, die nicht wieder zurückgeholt werden können, bei denen 
aber zum Glück wenigstens die TLD stimmt. Das kann ich nun parieren, als 
wäre Nichts gewesen.
Gast
Frank E. schrieb:
> Ich habe ja nun die URLs der ursprünglich aufgerufenen (nicht
> existierenden) Seiten samt Parametern. Live brauche ich sie deshalb,
> weil die Seitenaufrufe  - je nach URL und Parametern - unterschiedlich
> verteilt werden sollen.

mir erschließt sich immer noch nicht warum das dann live sein muss, aber 
egal - du wirst schon wissen was du willst.

sobald der 404er im log file aufschlägt ist es eh schon zu spät - der 
besucher hat gesehen, dass da nix sinnvolles kommt
OP (Firma: Q3)
Ich kann die falschen Links per PHP auswerten. Deshalb ist es mir nun 
möglich, bestimmte dieser falschen Links gezielt an das eigentlich 
vorgesehene Dokument weiterzuleiten. Das ist natürlich nur bei ganz 
konkreten "falschen" Links notwendig, nicht bei jedwedem Unfug.

Die einen bekommen nun keinen 404-Error mehr zu sehen, die anderen schon 
...
OP (Firma: Q3)
wos woas denn i schrieb:

> sobald der 404er im log file aufschlägt ist es eh schon zu spät - der
> besucher hat gesehen, dass da nix sinnvolles kommt

Dazu kommt es garnicht mehr. Wird per .htaccess abgefangen, per PHP 
ausgewertet und flexibel darauf reagiert.

Die Fehler, um die es hier geht, sind keine zufälligen (z.B. Vertipper 
etc.), sondern systematische, aus falsch hergestellten QR-Codes.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 7 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.