Eines der größten strukturellen Onpage-Probleme bei Online-Shops stellen Filter- und Sortierfunktionen dar, die viele indexierbare URLs generieren, welche Duplicate Content generieren und somit die Wertigkeit der relevanten Seiten abschwächen.
Ebenfalls wird die Linkpower externer Verlinkungen auf diese parametrisierten URLs nicht auf eine konkrete URL weitergegeben, sondern kann sich (je nach Backlink) auf gefilterte Seiten verteilen. Um diese Probleme zu umgehen, ist u.a. der korrekte Einsatz des Canonical-Tags zu empfehlen, der den Suchmaschinen eine bevorzugte URL für die Indexierung vorgibt. Für einem fiktiven Tier-Online-Shop werden hier einige Fälle durchgesprochen, die bei der Planung und Optimierung eines Online-Shops beachtet werden sollten.
Themenübersicht:
- Canonical Tags bei Kategorie-Seiten
- Detailseiten
- Paginierung
- Canonical-Einsatz: Was gibt es sonst noch zu beachten
- Filtertypen und technische Umsetzung
- Optimaler Title für Filterseiten
- Produktvarianten
- Breadcrumb für Filterseiten
- Ausblenden von Filtern
1. Canonical Tags bei Kategorie-Seiten
Kategorie-Seiten, auf denen Produkte/Artikel aufgelistet werden, können über mehrere Funktionen/Parameter indexierbare URLs erzeugen:
- Filter (Preis von/bis, Farbe, etc.)
- Sortierungen (Preis auf-/absteigend, Datum, Alphabetisch, etc.)
- Paginierung (Seite 1, letzte Seite, etc.)
- Darstellung (Anzahl angezeigter Artikel, Listen-/Kachel-/Galerie-Ansicht, etc.)
Dadurch kann eine Kategorie-Seite viele dynamische URLs genieren, die alle gleichen/ähnlichen Inhalt zu einer Produktgruppe aufweisen.
Existiert z.B. eine Seite:
www.domain.de/hunde/leinen/
so könnten dort durch den Einsatz der Filter-Parameter folgende URLs generiert und indexiert werden:
www.domain.de/shop/hunde/leinen/?preis=aufsteigend
www.domain.de/shop/hunde/leinen/?farbe=blau
www.domain.de/shop/hunde/leinen/?ansicht=liste
www.domain.de/shop/hunde/leinen/?seite=2
www.domain.de/shop/hunde/leinen/?preis=aufsteigend&farbe=blau&ansicht=liste&seite=3
Alle URLs würden Hundeleinen darstellen und „(Near) duplicate Content“ generieren.
Auf diesen parametrisierten Seiten sollte ein Canonical-Tag zu der Hauptseite, in diesem Fall www.domain.de/shop/hunde/leinen/, gesetzt werden.
<head> … <link rel="canonical" href="http://www.domain.de/hunde/leinen/"/> </head>
Diese parametrisierten Seiten werden dann nicht per Robots-Metatag auf “noindex” gesetzt. Die Suchmaschinen erkennen (normalerweise) anhand des gesetzten Canonical-Tags die priorisierte URL zu dieser Seite und geben auch die Linkpower (ähnlich einer 301-Weiterleitung) an diese weiter.
Die Hauptseite sollte ebenfalls einen Canonical auf sich selbst haben. Dies ist zwar nicht zwingend notwendig, beugt allerdings einer möglichen Indexierung von parametrisierten URL vor, die durch externe Verlinkungen entstehen könnten (z.B. Verlinkung auf www.domain.de/shop/hunde/leinen/?irgendeinparameter).
2. Detailseiten
2.1 Optimale Umsetzung: Eine eindeutige URL
Liegen Produkte in mehreren Kategorien, so sollten diese nur über eine URL erreichbar sein.
Das Produkt „Hundeleine XXL“ sollte dann z.B. nur über die URL
www.domain.de/shop/hundeleine-xxl
aufrufbar sein.
Die Unterbringung der Kategorie-Struktur (shop/hunde/leine/) in der URL ist an dieser Stelle für SEO nicht relevant, da diese Seite „Hundeleine XXL“ als Hauptkeywords fokussiert und Keywords in URLs nur einen indirekten Einfluss (durch die gefettete Darstellung in den SERPs) auf SEO haben.
Außerdem wird durch diese URL verhindert, dass Produkte, die in mehreren Kategorien liegen, über unterschiedliche URLs erreichbar sein können.
2.1 Alternative Umsetzung (Beispiel: Produktdetailseite Hundeleine XXL)
Sollte das vorher beschriebene Szenario mit einer eindeutigen URL für einen Artikel technisch nicht umsetzbar sein, bzw. die Usability negativ beeinflussen (Änderung der Breadcrumb), so sollte der Canonical-Tag auf eine definierte primäre URL verweisen:
URL 1: Navigation: Hunde -> Leinen
www.domain.de/shop/hunde/leinen/hundeleine-xxl.html
bevorzugte URL: Canonical auf sich selbst
<link rel="canonical" href="http://www.domain.de/shop/hunde/leinen/hundeleine-xxl.html"/>
URL 2: Navigation: Hunde -> Outdoor
www.domain.de/shop/hunde/outdoor/hundeleine-xxl.html
Canonical auf bevorzugte URL
<link rel="canonical" href="http://www.domain.de/shop/hunde/leinen/hundeleine-xxl.html"/>
3. Paginierung
Bei paginierten Seiten sollte kein Canonical-Tag auf die erste Seite gesetzt werden, da dadurch nicht garantiert werden kann, dass der Crawler den Detail-Links auf diesen Seiten folgt und die interne Linkpower auf diese Seiten weitergibt.
Hier empfiehlt Google den Einsatz von link rel=“next“ und link rel=“prev“, um Suchmaschinen mitzuteilen, dass sich eine Produktkategorie über mehrere Seiten erstreckt.
Auf der Seite http://www.domain.de/shop/hunde/leinen/?seite=2 sollte im <head> folgende Anweisung stehen
<link rel="prev" href=" http://www.domain.de/shop/hunde/leinen/" />
<link rel="next" href=" http://www.domain.de/shop/hunde/leinen/?seite=3" />
Auf der ersten Seite wird nur rel=”next” und auf der letzten nur rel=”prev” benötigt.
Eine Kombination mit rel=“canonical“ ist ebenfalls möglich.
Auf der Seite http://www.domain.de/shop/hunde/leinen/?farbe=gelb&seite=2
sollten dann folgende Anweisungen stehen:
<link rel="canonical" href="/shop/hunde/leinen/?seite=2" />
<link rel="prev" href="/shop/hunde/leinen/" />
<link rel="next" href="/shop/hunde/leinen/?seite=3" />
Der Canonical-Tag sollte hier nicht auf die erste Seite zeigen, da der Inhalt der zweiten Seite nicht identisch mit der ersten ist.
Um sicherzustellen, dass Suchmaschinen diese Seiten nicht in den Index aufnehmen und dadurch „Near duplicate Content“ entsteht, sollten diese Seiten per Robots-Metatag auf „noindex, follow“ stehen.
Wichtig bei Paginierungs-Links:
Möglichst viele Links anbieten, damit sich die Seiten nicht in zu tief liegenden Ebenen befinden.
Schlecht:
Seite 1 nächste Seite
Gut:
Seite 1 2 3 4 5 … 40 >
Um dem Crawler möglichst flache Strukturen zu liefern, kann die Paginierung auch so dargestellt werden, dass nicht nur die nächsten 5 Seiten und die letzte Seite angezeigt wird, sondern auch Zwischenschritte in 10er-Abständen:
Optimal:
Seite 1 2 3 4 5 … 10 20 30 40 >
4. Canonical-Einsatz: Was gibt es sonst noch zu beachten
4.1 „Reset-Parameter“
Wenn Filter auf der Seite deaktiviert werden, so können dadurch ebenfalls parametrisierte URLs generiert werden, z.B.
www.domain.de/shop/hunde/leinen/?ansicht=reset
www.domain.de/shop/hunde/leinen/?reset
Diese URLs benötigen ebenfalls einen Canonical-Tag auf die URL ohne Parameter.
4.2 Korrekter Canonical-Einsatz
Es sollte darauf geachtet werden, dass die URL des Canonical-Tags korrekt gesetzt ist.
Zu Problemen können folgende Fehler führen:
4.2.1 Absolute URLs als relative URLs verwendet
Falsch:
<link rel="canonical" href="www.domain.de/shop/hunde/leinen/hundeleine-xxl.html"/>
Richtig:
Entweder absolute URL
<link rel="canonical" href="http://www.domain.de/shop/hunde/leinen/hundeleine-xxl.html"/>
oder relativer Pfad zum Document Root
<link rel="canonical" href="/shop/hunde/leinen/hundeleine-xxl.html"/>
4.2.2 Doppelte Canonical
Gerade durch den Einsatz von Plug-Ins kann es vorkommen, dass mehrere Canonical-Tags im Code generiert werden. In diesem Fall wird die Canonical-Anweisung komplett ignoriert.
4.3 Indexierbare Filter
In speziellen Fällen kann es sinnvoll sein, bestimmte Filter-Seiten so umzusetzen, dass diese indexiert werden können.
Ein Beispiel dafür findet sich z.B. auf http://www.zalando.de/herrenschuhe/_gelb/
Lässt man sich in der Kategorie „Herrenschuhe“ nur die gelben Herrenschuhe anzeigen (was technisch gesehen ein Filter ist), so ist diese URL indexierbar. Möchte man bestimmte Filter-Seiten für den eigenen Online-Shop ranken lassen, so müssen diese indexierbar sein und nicht per Canonical-Tag auf die Kategorie-Seite verweisen.
Es sollte also vor der Entwicklung definiert werden, ob und (wenn ja) welche Parameter eine eigene Seite produzieren sollen, die in Suchmaschinen erscheinen soll.
Die optimale Umsetzung für diese Seiten ist, analog zum Zalando Beispiel, keine Parameter in der URL zu generieren, sondern diesen Filter als „Unterordner“ zu definieren.
Optimal:
www.domain.de/shop/hunde/leinen/leder/
Alternative:
www.domain.de/shop/hunde/leinen/material/leder/
Weitere Filter- oder Sortierungsparameter werden dann per Canonical-Tag auf diese URL verwiesen:
z.B. auf der Seite
www.domain.de/shop/hunde/leinen/leder/?maxpreis=100&sortierung=laenge
Canonical-Tag auf
www.domain.de/shop/hunde/leinen/leder/
Außerdem ist es sehr empfehlenswert, für diese „Filter-URLs“ Content zu erstellen und den Title der Seite individuell zu pflegen (hier z.B. „Lederhalsbänder für Hunde“)
4.3.1 Indexierbare Filterseiten mit mehreren Filtern
Dieses Beispiel knüpft an den zuvor beschriebenen Punkt an.
Sollten Filter-URLs im Shop vorhanden sein, die indexiert werden können, so sollte bei der Kombination von mehreren Filterparametern darauf geachtet werden, dass diese Parameter in einer vordefinierten Reihenfolge in der URL, bzw. im Canonical-Tag stehen.
So sind z.B. die Seiten
www.domain.de/shop/hunde/leinen/leder/schwarz/
www.domain.de/shop/hunde/leinen/schwarz/leder/
für Suchmaschinen 2 unterschiedliche URLs, obwohl der Content identisch ist. Hier sollte im Canonical-Tag eine Reihenfolge der Parameter definiert werden (z.B. alphabetisch), sodass diese stets gleich sind.
Beispiel: www.domain.de/shop/hunde/leinen/leder/schwarz/
<link rel="canonical" href="/shop/hunde/leinen/leder/schwarz/"/>
Beispiel: www.domain.de/shop/hunde/leinen/schwarz/leder/
<link rel="canonical" href="/shop/hunde/leinen/leder/schwarz/"/>
Im Optimalfall werden vom System direkt einheitliche URLs ausgegeben, sodass die Anordnung der „Unterordner-Filter“ immer identisch ist.
5. Filtertypen und technische Umsetzung
Es gibt verschiedene Filtertypen, die bei einem Online-Shop genutzt werden können. Generell ist jedoch zu sagen:
Filter, die keine indexierbaren Seiten generieren sollen, sollten als Formular-Felder umgesetzt werden, um keine Crawler-Ressourcen zu verschwenden.
Filter, die indexierbare Seiten generieren sollen, müssen als Link ausgegeben werden.
5.1 Range-Schieberegler
Vor allem für Preisbereiche wird diese Filterfunktion genutzt.
Dieser Filter wird als Formular umgesetzt. Suchmaschinen füllen diese generell nicht aus. Die daraus entstehenden Parameter sollten nicht indexierbar sein, und wie zuvor beschrieben entsprechend mit dem Canonical-Tag ausgeschlossen werden.
5.2 Einfache Auswahl
Zalando löst dies so, indem diese Links per CSS so gestylt werden, dass diese wie eine Auswahlliste aussehen. Crawler können dann diesen Links folgen und die Zielseiten indexieren.
Filter, die keine indexierbaren Seiten generieren sollen, müssen als Formular-Felder umgesetzt werden, um keine Crawler-Ressourcen zu verschwenden.
Sollte beispielsweise bei „Farbe“ nur schwarz und gelb als indexierbare Seite vorhanden sein, so sollten diese eigene Links bekommen und alle weiteren Farben in einem Formular aufgeführt werden. Mit JavaScript können diese beiden Links und das Formular dann optisch zu einen Element zusammengeführt werden.
Dies könnte z.B. bei Marken genutzt werden, um nur für ausgewählte Marken indexierbare Seiten zu generieren.
5.3 Mehrfach-Auswahl
Mehrfach-Auswahl-Filter lassen sich sinnvoll nur über ein Formular abbilden.
Sollten in diesem Beispiel die Seite „Royal Canin“ indexierbar sein, so müssen diese Seiten im Quellcode als Links ausgegeben werden, z.B.
www.domain.de/shop/hunde/futter/marke/royal-canin/
In dem Beispiel könnte man die Checkboxen als Formular lösen und die Labels als Links auszeichnen.
Eine Verlinkung auf eine indexierbare Seite mehrerer Hersteller macht an dieser Stelle aus SEO-Sicht keinen Sinn, da eine Zielseite für Hundefutter mehrerer Hersteller kaum Suchvolumen aufweisen wird.
Sollte dies dennoch benötigt werden, so muss die URL
www.domain.de/shop/hunde/futter/marke/royal-canin_happy-dog/
verlinkt werden.
6. Optimaler Title für Filterseiten
Eine der wichtigsten Onpage-Maßnahmen stellt der Title der Seite da.
Filter sollten standardmäßig automatisiert mit in den Title einfließen. Z.B. auf:
www.domain.de/shop/hunde/futter/marke/royal-canin/
„Hundefutter (Royal Canin)“
Diese automatisierten Title sollten von einem Redakteur manuell überschrieben werden können, sodass diese relevanter und sprechenden gestaltet werden kann:
„Hundefutter von Royal Canin günstig online kaufen“
7. Produktvarianten
Es gibt Produkte, die in verschiedenen Varianten vorkommen können, z.B.:
„Markenname 100% Complete & Balanced“
- Rind
- 1,5 kg
- 7,5 kg
- Geflügel
- 1,5 kg
- 7,5kg
Generell sollte für dieses Produkt jedoch nur eine Detailseite existieren, da sonst zu viele Kombinationen entstehen können und deren Keyword-Fokussierung (z.B. „Markenname 100% Complete & Balanced Rind 7,5kg“) nur wenig Suchvolumen entgegensteht.
Wenn eine indexierbare Seite unterhalb der Kategorie „Hundefutter“ für den Filter „Geschmack“ entstehen soll, so müssen die verschiedenen Geschmacks-Sorten, die in Produkten der entsprechenden Kategorie verfügbar sind, als Links dargestellt werden.
Wird eines dieser Produktvarianten angeklickt, sollte auf der Zielseite dann die entsprechende Variante über die Select-Box vorausgewählt werden.
Bei anderen Themengebieten oder kleinen Shops könnte man jedoch eine Struktur empfehlen, die alle verschiedenen Produktvarianten indexierbar macht. Hier kommt es zum Teil auf die Produktanzahl des Shops an. Bei kleineren Shops mit wenigen (unter 100) Produkten, könnte man für die verschiedenen Ausprägungen eigene indexierbare URLs generieren, um somit Traffic über Long-Tail Suchanfragen abzufangen.
Für das obige Beispiel gäbe es dann statt einer Produkt-Seite gleich 4 Produktseiten:
- Markenname 100% Complete & Balanced Rind 1,5kg
- Markenname 100% Complete & Balanced Rind 7,5kg
- Markenname 100% Complete & Balanced Geflügel 1,5kg
- Markenname 100% Complete & Balanced Geflügel 7,5kg
Alle Seiten haben ähnlichen Inhalt und für das Keyword „Markenname 100% Complete & Balanced“ keine eindeutige Ziel-URL.
8. Breadcrumb für Filterseiten
Um die Breadcrumb von Filterergebnisseiten nicht zu lang und komplex werden zu lassen, sollte die Breadcrumb den Kategorie-Pfad ohne Filter darstellen.
Die ausgewählten Filter sollten dann separat dargestellt werden. Zalando hat hier eine übersichtliche und userfreundliche Umsetzung gewählt:
Die Breadcrumb stellt hier die Kategorie dar, in der sich der User befindet. Alle ausgewählten Filter sind oberhalb der Ergebnisliste abgebildet und lassen sich dort entfernen oder ergänzen.
In den SERPs stellt dies eine übersichtliche und strukturierte Breadcrumb dar:
9. Ausblenden von Filtern
Befindet man sich auf einer Kategorie-Seite, so sollten die Filter ausgeblendet sein, die keine (0) Ergebnisse liefern würden.
Um Crawling-Ressourcen einzusparen sollte vorher überlegt werden, ob auf einer Kategorie-Seite mit wenigen Produkten (z.B. wenn alle Produkte ohne Paginierung auf eine Seite passen) weitere Filter-Links ausgeblendet werden, sofern die Zielseiten nicht als URL indexiert werden sollten.
Dies hätte bei Zalando z.B. auf der Seite http://www.zalando.de/sports-accessoires-herren/adidas_blau/ den Effekt, dass Links zu
http://www.zalando.de/sports-herren-kopfbedeckung/adidas_blau/
http://www.zalando.de/sports-handtuecher-herren/adidas_blau/
http://www.zalando.de/sports-ausruestung-herren/adidas_blau/
nicht erscheinen würden.
Diese Seiten bilden jedoch in diesem Fall passende Kategorie-Seiten ab, die sowohl dem User, als auch Suchmaschinen relevante Seiten liefern.
Zalando bietet ebenfalls Filter an, die anschließend auf Seiten führen, die auf „noindex“ stehen. Die User-Experience hat an dieser Stelle gegenüber den Crawling-Ressourcen Vorrang.
[seminar_banner]
4 Kommentare
Kai schrieb am 26. Mai, 2014 @ 13:41
Prima Artikel!
Ein paar Fragen hätte ich allerdings noch. Ab wieviel Prozent eines Produkttextes glaubt ihr denn, ist der Produkttext unique? Häufig sind ja Eigenschaften von Produkten gleich und dementsprechend nutzt man identische Textpassagen. So wäre es vom logischen Menschenverstand her ja unsinnig, wenn man z.B. den 2.0L TDI-Motor im VW Golf anders als im VW EOS beschreiben würde, obwohl in beiden Modellen die identischen Motoren zum Einsatz kommen
Wie geht Google eurer Meinung nach mit solchen Mischtexten um und welche Ratschläge könnt ihr geben, um solche Textpassagen eventuell dann doch vor Google zu verstecken ? Hilft da ein Nachladen des Contents z.B. oder wäre sowas schädlich, weil man den Gesamtcontent dadurch im Kontext für Google auseinanderreißt ?
Amin schrieb am 26. Mai, 2014 @ 18:45
Hallo Marcel,
sehr interessanter Artikel. Danke.
Bei der Paginierung empfiehlst du die Nutzung von Noindex und Canonical, die Kombi (Canonical+noindex) wird aber von Google nicht empfohlen! oder habe ich da was faslch verstanden?
„Der Canonical-Tag sollte hier nicht auf die erste Seite zeigen, da der Inhalt der zweiten Seite nicht identisch mit der ersten ist.
Um sicherzustellen, dass Suchmaschinen diese Seiten nicht in den Index aufnehmen und dadurch „Near duplicate Content“ entsteht, sollten diese Seiten per Robots-Metatag auf „noindex, follow“ stehen.“
Gruß
Marcel Gieron schrieb am 27. Mai, 2014 @ 9:02
Hallo Amin,
bei meiner Recherche bin ich auf den Artikel http://googlewebmastercentral.blogspot.de/2012/03/video-about-pagination-with-relnext-and.html ausmerksam geworden.
Dort steht:
Frage:
Does rel=next/prev also work as a signal for only one page of the series (page 1 in most cases?) to be included in the search index? Or would noindex tags need to be present on page 2 and on?
Antwort:
When you implement rel=“next“ and rel=“prev“ on component pages of a series, we’ll then consolidate the indexing properties from the component pages and attempt to direct users to the most relevant page/URL. This is typically the first page. There’s no need to mark page 2 to n of the series with noindex unless you’re sure that you don’t want those pages to appear in search results.
max schrieb am 3. Juni, 2014 @ 16:29
das Problem mit den Artikel Seiten haben wir auch das die Beschreibungstexte sich sehr ähnlich sind. Wobei ich der Meinung bin das das dort nicht wirkliche relevant ist da wir nur Kategorien Optimieren.