Hallo,
großes Interesse an dem Thema scheint ja nicht zu bestehen. Ich schreib jetzt trotzdem mal meine Lösung:
Mein Ziel war, bei Aufruf einer Seite, die nicht (mehr) vorhanden ist, im Browser die Startseite des shops anzuzeigen. Auch muss der Suchmaschine signalisiert werden, dass die gesuchte Seite nicht gefunden werden kann. Damit fliegen dann Seiten, die bisher existierten und die der Shop jetzt abgelöst hat, aus dem Index von Google&Co raus, der User erhält aber trotzdem die Startseite des Shops angezeigt.
Übrigens scheint Google bei erscheinen einer Standardfehlerseite seit neuestem auch eigene Inhalte anzuzeigen, klaut mir also meine Besucher. Dem lässt sich aber abhelfen...
Dazu habe ich die /index.php kopiert und im Hauptverzeichnis des Shops als error.php gespeichert. Damit beim Aufruf dieser Seite die Suchmaschine auch mitbekommt, dass die gewünschte Seite nicht aufgerufen wurde und jetzt die Fehlerseite angezeigt wird, muss ein
header 404 Not Found gesendet werden.
Das erreiche ich mit der folgenden Zeile am Anfang meiner error.php. Sieht dann so aus:
- Code: Alles auswählen
include_once("conf/config.inc.php");
header("HTTP/1.0 404 Not Found");//die neue Zeile
Damit die error.php auch zur Standardfehlerseite wird, muss in der .htaccess Datei im Hauptverzeichnis folgende Zeile stehen
- Code: Alles auswählen
ErrorDocument 404 http://www.meinshop.de/error.php
Damit wird dem Webserver gesagt, dass er die error.php als Fehlerseite ausliefern soll, wenn die gesuchte Seite nicht gefunden wird.
Allerdings werden nun Artikel die nicht mehr aktiv sind, trotzdem noch nicht mit dem Fehler 404 ausgeliefert. Im randshop wird in diesem Fall nur auf die index.php umgeleitet, und diese liefert den Header
200 ok. Damit hier auch
404 Not Found geliefert wird, hab ich die /themes/kategorie/detail.php leicht geändert. Der Block zur Weiterleitung (ziemlich am Anfang) sieht jetzt so aus:
- Code: Alles auswählen
// Wenn der Artikel deaktiviert ist
if (!$ArtikelObject->aktiv) {
// header('Location: ' . URLPFAD . 'index.php', false); //Umleitung auf index.php ohne Fehlermeldung
header('Location: ' . URLPFAD . 'error.php', false); //Umleitung auf error.php, liefert Error 404 an Browser/Suma
exit;
}
Damit wird also auf die error.php umgeleitet, die zeigt die Startseite an und meldet
404 Not Found an die Suchmaschine/Browser. Google weiß damit, dass der Artikel nicht mehr existiert und löscht aus dem Index.
Das ganze ließe sich auch zu einer richtig guten Fehlerseite ausbauen. Dem Besucher könnte die Info gegeben werden, dass die aufgerufene Seite/Artikel nicht mehr existiert, es könnten dann andere Artikel aus der Kategorie angeboten werden, oder auch die Suchfunktion. Nette Möglichkeiten gäbe es da viele...
Wenn man jetzt noch int der robots.txt (hat ja jeder, oder?) diese Zeile anbringt
- Code: Alles auswählen
Disallow: /error.php
dann wird die error.php von den Suchmaschinen auch nicht indiziert. Schließlich ist ja schon die index.php als Startseite im Index.
Für den Fall, dass der Artikel wieder aktiviert wird, empfiehlt sich der Einsatz einer
Sitemap, die dann aktualisiert wird und Google beim nächsten Besuch die aktuelle Liste der Artikel, Kategorien liefert.
Hoffe, das kann hilfreich sein, Feedback willkommen!
Gruß
Magnus