Twinkle | Digital Commerce

SEO voor Magento: problemen door navigatie oplossen

2017-05-27
180101
  • 6:21

Magento is de laatste jaren uitgegroeid tot het populairste platform voor webwinkels. Stefan Vernooy van Onetomarket gaat in op een aantal zoekmachinegerelateerde kwesties bij Magento. Allereerst bespreekt hij de SEO-aspecten van layered navigation.

Tekst: Stefan Vernooy
 
Zeker 12 procent van de webwinkels wordt opgezet in Magento en dit aandeel is nog altijd groeiende (bron):



Magento is een professioneel pakket, dat legio mogelijkheden biedt om een webshop goed en professioneel op te zetten. Door het succes van Magento kom ik tijdens mijn werk als SEO-consultant bij Onetomarket veel webwinkels tegen die Magento implementeren en daarna (waarschijnlijk) overweldigd worden door alle prachtige functionaliteiten en instellingen die het pakket biedt. Hierdoor ontstaan vaak diverse SEO-problemen die eenvoudig kunnen worden opgelost.

Over veel SEO-gerelateerde zaken hebben de ontwikkelaars van Magento zeker nagedacht, alleen is het resultaat daarvan voor startende webwinkeliers soms lastig te vinden of in te richten. Aan de hand van een serie artikelen wil ik jullie de meest voorkomende problemen op het gebied van SEO voor Magento laten zien en daarbij uiteraard oplossingen aandragen. In dit eerste artikel ga ik in op layered navigation (filters).

Layered navigation
Layered navigation is een krachtig element van Magento, maar het levert ook direct een van de grootste problemen op het gebied van SEO op: duplicate content.
 
Layered navigation is een manier van navigeren die inhoudt dat een bezoeker zijn of haar zoekopdracht op de website kan filteren, om zo tot een selectie van producten te komen. Een mooie functie voor de gebruiker, zou je zo op het eerste gezicht zeggen.

Maar wat is hier nu het probleem voor SEO? Filters zorgen in een standaardinstallatie van Magento voor legio combinaties van pagina’s met verschillende url’s. Dit is voor SEO niet wenselijk, omdat we meerdere pagina’s krijgen die met elkaar gaan concurreren. Deze pagina’s zullen over het algemeen dezelfde focus hebben. Dit zien we mooi in de demonstratieomgeving van Magento.

Wanneer we in de demo-omgeving kijken in de categorie apparel zien we de diverse filtermogelijkheden. Deze filters bestaan uit linkjes die standaard allemaal gevolgd worden door de zoekmachines en die dus ook allemaal indexeerbaar zijn. Wanneer we gaan filteren op bijvoorbeeld shirts krijgen we de volgende pagina:
http://demo.magentocommerce.com/catalog/category/view/s/apparel/id/18/?cat=4

De pagina bestaat uit de zelfde url als de pagina met apparel, maar nu met een parameter ?cat=4 . De focus van deze pagina ligt hier op shirts. Wanneer er weer verder gefilterd gaat worden, bijvoorbeeld op prijs, krijgen we de volgende url met toevoeging &price=-100:
http://demo.magentocommerce.com/catalog/category/view/s/apparel/id/18/?cat=4&price=-100

De focus van deze pagina ligt nog steeds op shirts. Er wordt op deze manier dus een pagina gecreëerd die concurreert met de voorgaande pagina en eventueel nog meerdere pagina’s als er nog meer gefilterd kan worden.

In de demo store bestaat ook nog een categorie die zich richt op shirts. Met de volgende url:
http://demo.magentocommerce.com/catalog/category/view/s/shirts/id/4/

Ook deze pagina is identiek aan de pagina die we hiervoor gefilterd hebben. Een duplicate content probleem dus. Welke pagina willen we dat de zoekmachines gaat tonen?

Het probleem wordt ook onderstreept wanneer we gaan kijken hoeveel pagina’s door Google in deze Magento-demo zijn opgenomen in de index. Google heeft alleen al voor dit subdomein ongeveer 255.000 resultaten gevonden. Voor een demowinkel met 62 producten is dat een aardig aantal. Voor mij als SEO-consultant is dit een eerste aanwijzing dat de site een probleem zou kunnen hebben met duplicate content.



Google volgt kortom alle linkjes op de demosite en indexeert deze ook keurig, met een flink aantal geïndexeerde pagina’s tot gevolg. Hoe kunnen we dit nu voorkomen? Hiervoor staan diverse mogelijkheden en oplossingen op een rij. Ik zal de meest voorkomende oplossingen met u doornemen.

Oplossing 1: robots.txt
Een van de oplossingen is het toevoegen van een robots.txt aan uw webwinkel. Door middel van dit bestand, dat u in de root van uw site plaatst, geeft u aan waar de zoekmachine wel en niet mag komen. Op deze manier kunt u de pagina’s met filter url’s uitsluiten van indexatie.

U sluit deze filter-url’s uit door in de robots.txt het volgende te zetten:

User-agent: *
Disallow: /*?

Maar hoe weet u of u al een robots.txt bestand in uw Magento webwinkel hebt? Dit kunt u heel eenvoudig controleren door achter uw domeinnaam /robots.txt te zetten. Uw browser zal het bestand aan u tonen en de inhoud van het bestand weergeven:



Wanneer u een foutmelding zoals een 404-pagina te zien krijgt, kunt u er vanuit gaan dat er nog geen robots.txt aanwezig is op uw website.

U kunt heel eenvoudig zelf een robot.txt pagina aanmaken door in het kladblok een tekstbestand te maken met bovenstaande code en deze op te slaan met de naam robots.txt. Wanneer u het bestand heeft opgeslagen uploadt u het met behulp van een FTP-client naar de root van uw website.

Let op:
Een robots.txt is geen garantie dat pagina’s niet opgenomen worden in de index. Wanneer een website gaat linken naar de URL met de filter kan deze alsnog in de index terug komen.

Oplossing 2: canonicals
Een andere mogelijke oplossing voor het probleem met de filters zijn canonical links. Deze links voegt u toe aan de pagina’s van Magento. Met een canonical vertelt u de zoekmachine dat de (filter)pagina die de zoekmachine bezoekt niet de originele pagina is, maar een kopie van de pagina die gespecificeerd staat in de canonical code. Een canonical code ziet er als volgt uit:

<link   rel="canonical" href=” http://www.uwwebwinkel.nl/originele-categorie/ ”/>

Wanneer een gebruiker filtert, zal er in de code staan welke pagina het origineel is. Ter verduidelijking hierbij een praktijkvoorbeeld:

De pagina heeft bijvoorbeeld de volgende url:
http://www.moleculeclothing.eu/dutch/cargo-shorts-men

Wanneer je filtert op de kleur groen dan wordt de url:
http://www.moleculeclothing.eu/dutch/cargo-shorts-men?color=22, waarbij color=22 staat voor groen.

Op bovenstaande pagina staat de volgende canonical code:
<link
  rel="canonical" href=” http://www.moleculeclothing.eu/dutch/cargo-shorts-men/ ”/>



Op deze manier geven we aan dat de gefilterde pagina een kopie is van het origineel dat in de canonical staat gedefinieerd. Resultaat? Google identificeert hiermee de originele pagina’s en zal de ‘kopieën’ niet als duplicate content beschouwen.

In de laatste versie van Magento 1.7.0.2 zit standaard de mogelijkheid om canonicals toe te voegen. U zet dit aan door in te loggen in de backend van uw webwinkel en te navigeren naar:

Systeem > Configuratie > Catalogus > Search Engine Optimalisatie (SEO)

Hier zet u de opties Use Canonical Link Meta Tag For Categories en Use Canonical Link Meta Tag For Products op Ja.

Wanneer u een oudere versie van Magento heeft, kunt u de plugin Canonical URL for Magento plugin van Yoast installeren. Deze plugin plaatst automatisch canonicals op de diverse pagina’s.

Let op:
Canonicals zijn geen garantie dat pagina’s niet opgenomen worden in de index. Een canonical is slechts een advies aan de zoekmachine. Wanneer de zoekmachine de content relevant vindt kan deze alsnog besluiten de content op te nemen in de index.

Oplossing 3: AJAX filters
De netste oplossing voor layered navigation en het voorkomen van duplicatie content is het gebruik van een Javascript op basis van AJAX technologie. Wanneer men AJAX gebruikt om te filteren kan een url aangepast worden door daar een hash (#) aan toe te voegen. Alles wat achter deze hash staat wordt genegeerd door de zoekmachines.

De url’s die deze plugin genereert zijn dan ook als volgt:
http://priceslider.mangoextensions.com/our-products.html#cat=4



Zonder toepassing van deze AJAX oplossing zou de standaard url als volgt zijn: http://priceslider.mangoextensions.com/our-products.html?cat=4

De url die de zoekmachine met AJAX oplossing ziet is http://priceslider.mangoextensions.com/our-products.html

Op deze manier houden we het aantal geïndexeerde pagina’s beperkt, wat het risico op duplicate content gigantisch vermindert.

Het ontwikkelen en implementeren van deze techniek kan heel veel tijd kosten. Het mooie van Magento is dan ook dat ook hier een plugin voor is. Deze plugin neemt veel werk uit handen en zal de standaardfilters vervangen door AJAX filters met een hash in de URL.

Let op:
Deze plugin werkt goed met het standaard thema van Magento. Wanneer je een eigen thema hebt zullen er wat wijzigingen gedaan moeten worden in de html van het thema.

Duplicate content is dus een veel voorkomend probleem bij Magento webshops. Met bovengenoemde oplossingen kun je dit voorkomen. In het volgende deel ga ik in op de snelheid van Magento en hoe we die eenvoudig kunnen optimaliseren.
 
Stefan Vernooy is werkzaam als SEO consultant bij online marketingbureau Onetomarket.