Lösung: Error 404 Seite mit korrektem HTTP Header anzeigen

Kein System ist vollkommen, findet Ihr Fehler im System, könnt ihr diese hier gerne Posten. Wir werden auch kurzfistige Lösungen und Fixes hier schreiben.

Moderatoren: Magnus, mmaass, ablass

Lösung: Error 404 Seite mit korrektem HTTP Header anzeigen

Beitragvon Magnus » Mi 18. Feb 2015, 21:53

Im randshop ist eine eigene Fehlerseite drin, die angezeigt wird, wenn eine Adresse falsch ist, z.B. falsch geschrieben oder die Kategorie existiert schon lange nicht mehr.
Das wird dadurch erreicht, dass, wenn der "sprechende url" in der Datenbank nicht gefunden werden kann, auf die Fehlerseite weitergeleitet wird.

Sieht man sich die HTTP-header an, zeigt sich folgendes Bild:
Der erste HTTP-Header ist ein "error 302 moved temporarily", erst danach kommt von der error_404.php ein "error 404 not found". Der url im Browser wechselt dann auch zu dieser Adresse und zeigt meinshop.xx/themes/error/error_404.php an.

Das hat zwei Nachteile: Suchmaschinen erhalten nicht die "richtige" Information (erst 302, dann 404, was macht man damit?) und Benutzer können ihre Eingabe in die Adresszeile nicht mehr kontrollieren, weil ja jetzt die Adresse der Fehlerseite drin steht.

Das lässt sich aber leicht korrigieren:
in der /bootstrap.php müssen die Zeilen 130 und 135 folgendermaßen angepasst werden:
Code: Alles auswählen
    } else {
        //header('Location: ' . URLPFAD . 'themes/error/error_404.php');
        include_once(DATEIPFAD . 'themes/error/error_404.php');
        exit;
    }
   
} else {
    //header('Location: ' . URLPFAD . 'themes/error/error_404.php');
    include_once(DATEIPFAD . 'themes/error/error_404.php');
    exit;
}


Dabei wird die Umleitung (header('location: ...) durch die zwei Schrägstriche auskommentiert. Damit fällt die Umleitung weg und damit auch der moved temporarily -Header.
Die zweite Zeile muss reingeschrieben werden und sorgt dafür, dass der Inhalt der error_404.php geladen und angezeigt wird. Von der error_404.php wird der error 404 Header ausgegeben, jetzt als erster und korrekter Header. Die Fehlerseite wird damit auch angezeigt.

Und weil ja keine Umleitung mehr stattfindet, bleibt die vom Benutzer eingegebene Adresse erhalten :-)

Übrigens ist diese Technik in der gesamten bootstrap.php angewandt.
Und weil sich die bootstrap.php seit der version 1.5 nicht mehr geändert hat, lässt sich das auch bei allen randshop Versionen bis zur aktuellen 2.3 genau so anwenden.

viele Grüße

magnus
Magnus
 
Beiträge: 1602
Registriert: Mi 21. Feb 2007, 21:10

Re: Lösung: Error 404 Seite mit korrektem HTTP Header anzeig

Beitragvon sudoku » Do 19. Feb 2015, 13:05

Ist da eine } zuviel oder zu wenig?
Gruß Sudoku
sudoku
 
Beiträge: 45
Registriert: Do 8. Okt 2009, 17:59

Re: Lösung: Error 404 Seite mit korrektem HTTP Header anzeig

Beitragvon sudoku » Do 19. Feb 2015, 16:32

Ziehe die Frage zurück..nach Einfügen beider Zeilen war der Code ok.
Danke für die Lösung, Google wird sich freuen.
Gruß Sudoku
sudoku
 
Beiträge: 45
Registriert: Do 8. Okt 2009, 17:59

Re: Lösung: Error 404 Seite mit korrektem HTTP Header anzeig

Beitragvon Randshoprookie » Do 19. Feb 2015, 18:12

Hi Magnus,

vielen,vielen Dank :D
Klappt wieder wie "früher"

LG Piet
https://www.aeon-online.de
Aktuelle Version: Randshop Version 2.4, Faktura, Seo und Admin Modul von Shopzeug, und einige Zeit der Anpassung
Randshoprookie
 
Beiträge: 1214
Registriert: So 22. Apr 2012, 07:40

Re: Lösung: Error 404 Seite mit korrektem HTTP Header anzeig

Beitragvon Werner » Do 19. Feb 2015, 23:30

Hallo,

ich habe auch Probleme mit der error-seite. Nach Änderung der Zeilen erscheinen nun im shop folgende Fehlerzeilen:

Warning: include_once() [function.include-once]: open_basedir restriction in effect. File(../../conf/config.inc.php) is not within the allowed path(s): (/var/www/web423/html:/var/www/web423/phptmp:/var/www/web423/files:/var/www/web423/atd:/usr/share/php) in /var/www/web423/html/Shop2.2/themes/error/error_404.php on line 24

Warning: include_once(../../conf/config.inc.php) [function.include-once]: failed to open stream: Operation not permitted in /var/www/web423/html/Shop2.2/themes/error/error_404.php on line 24

Warning: include_once() [function.include]: Failed opening '../../conf/config.inc.php' for inclusion (include_path='.:/home/php53/lib/php:/usr/share/php') in /var/www/web423/html/Shop2.2/themes/error/error_404.php on line 24

Hat jemand zu diesem Problem eine Lösung?
Werner
 
Beiträge: 294
Registriert: Mi 22. Jun 2011, 13:18

Re: Lösung: Error 404 Seite mit korrektem HTTP Header anzeig

Beitragvon Randshoprookie » Fr 20. Feb 2015, 06:11

Hallo Werner,

setz doch mal in der config.inc.php die display errors wieder auf 0 und schau ob es dann fehlerfrei funktioniert.

LG Piet
https://www.aeon-online.de
Aktuelle Version: Randshop Version 2.4, Faktura, Seo und Admin Modul von Shopzeug, und einige Zeit der Anpassung
Randshoprookie
 
Beiträge: 1214
Registriert: So 22. Apr 2012, 07:40

Re: Lösung: Error 404 Seite mit korrektem HTTP Header anzeig

Beitragvon Magnus » Fr 20. Feb 2015, 16:17

Hallo,

vielen Dank für den Hinweis!

Das sind Warnings, weil in der error_404.php der relative Pfad zur config.inc.php nicht mehr stimmt. Sachlich kein Problem, weil die ja schon in der bootstrap.php eingebunden wird.

Um das jedoch richtig gut zu machen, schreibt man die zwei Zeilen in der bootstrap.php so: (setzt also die Variable $SEOCall mit true davor)
Code: Alles auswählen
    $SEOCall = true;
    include_once(DATEIPFAD . 'themes/error/error_404.php');


und schreibt in der error_404.php die Zeile, in der die config.inc.php eingebunden wird statt
Code: Alles auswählen
    include_once("../../conf/config.inc.php");
    include_once(DATEIPFAD . "conf/db.inc.php");

so um, damit wird die Variable $SEOCall ausgewertet:
Code: Alles auswählen
if (!$SEOCall) {
    include_once("../../conf/config.inc.php");
    include_once(DATEIPFAD . "conf/db.inc.php");
}


jetzt ist das rund ;-)

Wäre natürlich schön, wenn das von randshop übernommen würde, dann wäre es auch nach dem nächsten Update noch drin.

viele Grüße

magnus
Magnus
 
Beiträge: 1602
Registriert: Mi 21. Feb 2007, 21:10

Re: Lösung: Error 404 Seite mit korrektem HTTP Header anzeig

Beitragvon Werner » Mo 23. Feb 2015, 23:49

Hallo Piet und Magnus,

danke für Eure effektive Hilfe und Tipps.
Es scheint jetzt alles wunderbar zu funktionieren, die Warnings sind auch verschwunden.

Was mich noch stört, ist daß google-webmaster die errorseite immer noch nicht findet!!

Ich habe auch noch eine Anregung für mich und andere Blinde, wenn codes irgendwo eingefügt oder verändert werden sollen, bitte möglichst genau die Schritte und Zeilen angeben, ich bin sonst nur am Suchen als Laie.

z.B wußte ich nun nicht genau ob dies $SEOCall = true; nun 2 x rein kommt oder nicht, ich habe es jetzt so gemacht:

} else {
//header('Location: ' . URLPFAD . 'themes/error/error_404.php');
$SEOCall = true;
include_once(DATEIPFAD . 'themes/error/error_404.php');

exit;
}

} else {
//header('Location: ' . URLPFAD . 'themes/error/error_404.php');
$SEOCall = true;
include_once(DATEIPFAD . 'themes/error/error_404.php');

exit;
}

Hoffe doch, daß ich es so richtig verstanden habe?

Beste Grüße

Werner
Werner
 
Beiträge: 294
Registriert: Mi 22. Jun 2011, 13:18

Re: Lösung: Error 404 Seite mit korrektem HTTP Header anzeig

Beitragvon Magnus » Mi 25. Feb 2015, 14:41

Hallo Werner,

das passt schon so, wie du das gemacht hast. Bis Google das umsetzt, kann es aber durchaus Tage bis Wochen dauern.
Das mit dem genauer erklären ist aber so eine Sache. Prinzipiell kann es gefährlich sein, Code, den man nicht versteht, einfach rein zu kopieren. Besser wäre, den Code zu verstehen, setzt natürlich ein bisschen Aufwand voraus. Man muss ja nicht gleich ein Programmierer werden, nur kommen Anpassungen immer wieder vor, egal, ob es dabei um Verbesserungen im eigentlichen Programm geht oder "nur" um Anpassungen im Template.
Ich versuche schon möglichst ausführlich zu beschreiben. Das aber so zu machen, dass ein absoluter Laie das versteht, ist schon nicht ganz einfach ...

viele Grüße

Magnus
Magnus
 
Beiträge: 1602
Registriert: Mi 21. Feb 2007, 21:10

Re: Lösung: Error 404 Seite mit korrektem HTTP Header anzeig

Beitragvon Werner » Fr 27. Feb 2015, 07:14

Hallo Magnus,

danke nochmals für Deine immer wieder hervorragende Hilfe. Dann bin ich auch beruhigt re passt schon.

Ja google ist in der Beziehug ein getarnter Parkplatz, wenn es aber ums Geschäft sprich Einnahmen geht, dann flutscht es, eben Datenkrake und Monopolist.

Ok mit dem genauen Erklären für Laien wäre einfach auch zu aufwändig, Du hälst ja hier auch keine kostenlosen Programmierseminare ab.

Ich habe es ja auch so dank Deiner Anleitung hinbekommen.

Beste Grüße

Werner
Werner
 
Beiträge: 294
Registriert: Mi 22. Jun 2011, 13:18


Zurück zu Bugmeldungen

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste
cron