In xt:Commerce-Shops sind Artikel immer unter mehreren Adressen erreichbar. Das kann für doppelten Content sorgen, wenn man beispielsweise auf Suchmaschinen freundliche URLs umstellt, ShopStat nachrüstet oder bereits einen Auftritt mit ShopStat-URLs hat - und seine Kategorien umsortiert oder umbenennt.

Standardmäßig werden Produkt-Links (Beispiel Artikel mit Produkt-ID 12) im Shop so ausgegeben:

  • www.shop.de/product_info.php?info=p12_Artikelname.html

Zum selben Artikel führen würden allerdings auch diese Links

  • www.shop.de/product_info.php?info=p12.html
  • www.shop.de/product_info.php?info=p12_Neuer-Name

Das ist nicht weiter wild - Im Shop selbst taucht im Regelfall ohnehin nur die “gewünschte” Version des Produktlinks auf. Und meistens werden Produkte (im Gegensatz zu Kategorien) auch nur selten umbenannt. Die Gefahr, dass den großen Suchmaschinen mehrere Links auf ein und denselben Artikel bekannt werden, ist also eher gering.


xt:C-Standard

Schaltet man die Suchmaschinen freundlichen URLs von xt:Commerce ein (und es klappt ausnahmsweise auch mal ohne Probleme), kommen noch ein paar funktionstüchtige Varianten hinzu, die zu Artikel 12 verlinken:

  • www.shop.de/product_info.php/info/p12_Artikelname
  • www.shop.de/product_info.php/info/p12_Neuer-Name.html
  • www.shop.de/product_info.php/info/p12


ShopStat

ShopStat arbeitet ein bisschen anders - und baut zusätzlich noch den Kategorien-Pfad zum Artikel in den Link mit ein. Wichtig für’s Funktionieren ist allerdings lediglich die Zahl, die direkt vorm “.html” steht. Was zwischen dem ersten Slash und den beiden Doppelpunkten steht, ist irrelevant:

  • www.shop.de/OberKat/UnterKat/Artikelname::12.html
  • www.shop.de/NeueKat/Umgezogen/Neuer-Name::12.html
  • www.shop.de/::12.html
  • www.shop.de/ist-vollkommen-Wurscht::12.html


Was heißt das für uns?

Wenn die “alten” Links schon gut bei Google & Co vertreten sind und man seine Artikel-Links via ShopStat oder den xt:C-Standard SuMa-freundlichen URLS zentral verändert, dann ist Doppelter Content quasi unvermeidlich.

Die alten Links sind bekannt, sie funktionieren außerdem noch - die neuen Varianten stehen im Shop - und die funktionieren natürlich auch. Und schon stehen lauter Artikel mehrfach drin.

Hat man ShopStat aktiviert, kommt noch hinzu, dass sich beim “Umsortieren” von Artikeln oder Kategorien auch der im “normalen Link” wiedergegebene Artikelpfad ändert, Links mit dem alten Pfad aber ebenfalls weiterhin Treffer landen.

So können bei ShopStat auch einfache “Aufräum”-Arbeiten mehrfach gelistete Produkte verursachen.


Die Lösung …

… ist eigentlich ganz einfach. Man stellt fest, ob man sich auf einer Produkt-Detail-Seite befindet oder nicht. Wenn ja, ermittelt man den “gewünschten”, aktuellen Produkt-Link. Stimmt dieser nicht mit den entsprechenden Teilen aus $_SERVER['REQUEST_URI'] überein, leitet man via 301er (”Moved Permanently”) zur neuen Adresse um.

Auf diese Weise teilt man den Suchmaschinen mit, dass sie in Zukunft bitteschön den neuen Link zu beachten haben, und doppelter Content kann für Artikel nicht mehr auftauchen.


gunnart_productRedirect

Ich hab für diese Problematik eine kleine Datei geschrieben, der Einbau kann komplett im Template stattfinden - Änderungen an System-Dateien sind nicht erforderlich.

  1. Dieses » ZIP-Archiv herunterladen und entpacken
    Dieses » ZIP-Archiv (Update!)
    Dieses » ZIP-Archiv (BugFix!) herunterladen und entpacken
  2. Die Datei “gunnart_productRedirect.inc.php” in den Ordner “source/inc” des aktiven Templates hochladen
  3. In der “boxes.php” einbinden …
    require_once (DIR_FS_CATALOG . 'templates/' . CURRENT_TEMPLATE . '/source/inc/gunnart_productRedirect.inc.php'); … am besten gleich ganz an den Anfang setzen
  4. … und fertig!


In der Praxis:

Beispiel “Magic and Arts” (ShopStat in der “Vollversion”) - Dieser Link ist gewünscht …

… und Links dieser Art funktionieren nicht bloß, sie leiten auch gleich auf die gewünschte Adresse des Artikels um:


Hinweise:

  1. “gunnart_productRedirect” ist getestet mit xt:Commerce 3.04 SP2.1 - Mit und ohne ShopStat. Vermutlich funktioniert der kleine Trick auch mit den Bluegate-URLs und anderen, aber ich hatte noch keine Gelegenheit, das ausführlich auszuprobieren.
    Abgesehen davon mag ich von allen bisher getesteten “SuMa-freundlichen URL Erweiterungen” ShopStat immer noch am liebsten.
  2. Links umzuändern oder umzustrukturieren ist immer ein heißes Eisen. Nicht umsonst heißt es “Cool URLs don’t change”. Dass man so Abstürze im Ranking ausschließen kann - so weit lehne ich mich ganz bestimmt nicht aus dem Fenster. Aber ein bisschen Schadensbegrenzung sollte schon drin sein
  3. Wie immer: Bitte erst an einem Test-System ausprobieren
  4. Ähnliche Dateien für “Kategorien” und “ContentManager-Seiten” sind momentan in Arbeit.
    Leider gibt’s sehr viele Shops mit Sortier-Funktionen, die die Sortier-Parameter via $_GET mitschleifen, was ein paar Dinge erschwert. Ich find’s allgemein sehr viel praktischer, solcherlei Sortier-Vorgaben mit in $_SESSION abzulegen …


Update (10. Dezember 2008)

In Version 0.12 wird geprüft, ob der jeweilige Artikel aktiv oder für die Kundengruppe zugelassen ist.

Bei den SuMa-URLs von customweb.ch kann es sonst (Danke an Andreas für den Hinweis und fürs Testen) zu “Endlosschleifen” kommen. Nun wird auf eine andere Seite weitergeleitet. Welche das ist, wird in Zeile 89 bestimmt:

$DefaultLink = xtc_href_link(FILENAME_DEFAULT);

Hier ist also die Startseite dran. Man könnte aber auch z.B. so zur SiteMap umleiten:

$DefaultLink = xtc_href_link(FILENAME_CONTENT,'coID=8');

Außerdem hatte ich vergessen (Sorry!), dass die Funktion xtc_product_link(); in Shops mit den Standard SuMa-freundlichen URLs auch noch den Artikelnamen für einen “schönen Link” benötigt.

Bei ShopStat und den mir bekannten anderen Erweiterungen reicht dazu die Products-ID.


BugFix (11. Dezember 2008)

Siehe Kommentar von Markus: Das “t” beim FSK-Check ist falsch …