Drupal is een prima open source CMS. Er is een redelijk actieve community die behoorlijk veel modules heeft geproduceerd. Het CMS is krachtig en er is redelijk eenvoudig mee te werken. Wat echter niet al te perfect is, is de zoekmachinevriendelijkheid van het systeem. In dit artikel loop ik zoveel mogelijk punten langs en noem ik mogelijke oplossingen. De focus ligt m.n. op de URL?s en duplicate content.
In de standaard .htaccess file die Drupal meelevert staat dit:
# If you want the site to be accessed WITH the www. only, adapt and uncomment the following:
# RewriteCond %{HTTP_HOST} !^www.example.com$ [NC]
# RewriteRule .* http://www.example.com/ [L,R=301]
#
# If you want the site to be accessed only WITHOUT the www. , adapt and uncomment the following:
# RewriteCond %{HTTP_HOST} !^example.com$ [NC]
# RewriteRule .* http://example.com/ [L,R=301]
Op deze manier kun je ervoor kiezen of je site alleen via http://example.com of alleen via http://www.example.com bereikbaar is. Je bent niet slim bezig als je er voor kiest zo?n voor de hand liggende optie te negeren. Welke optie je kiest maakt SEO-technisch niet gek veel uit. Het probleem met deze URL?s is echter dat er standaard geredirect wordt naar de homepage. Dit los je makkelijk op via:
RewriteCond %{HTTP_HOST} !^www.example.com$ [NC]
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
of
RewriteCond %{HTTP_HOST} !^example.com$ [NC]
RewriteRule (.*) http://example.com/$1 [R=301,L]
Verder mag uiteraard in deze paragraaf de autopath-module niet missen. Als je Drupal zo configureert dat je clean URL?s gebruikt, kun je met autopath deze URL?s standaard aanmaken.
Wat me tevens opvalt is dat als je een bestaand bericht wijzigt en daarbij ook de titel aanpast, de URL standaard ook verandert. Op die manier is duplicate content een gevaar. Het maakt dan niet uit welke URL je opgeeft bij het artikel ? De fout ontstaat onafhankelijk van die waarde. De URL wordt altijd tot een geautomatiseerde URL die bepaald wordt a.d.h.v. de titel. Anders gezegd: Het is niet mogelijk een titel van een bericht te wijzigen, zonder dat het bericht ook wijzigt. Uiteraard kun je dit de database omzeilen, maar dat is niet de geijkte manier uiteraard.
In een eerder artikel noemde ik al dat Drupal nogal eens last heeft van duplicate content. In het kort gaat het om print pagina?s, feed pagina?s, comments en blog-items. Als je werkt met een tagging system, ontstaat daar natuurlijk ook behoorlijk snel duplicate content. In het genoemde artikel noem ik welke aanpassingen je in je robots.txt moet doen om indexatie te voorkomen, maar in principe is dat natuurlijk een lelijke oplossing van een probleem wat via bijvoorbeeld rel=”nofollow” opgelost had kunnen worden.
Misschien zijn meta tags niet meer het meest spannend voor SEO, maar dat Drupal ze compleet niet plaatst is toch wel jammer te noemen. De enige meta-informatie die standaard in Drupal zit is:
De oplossing voor dit probleem is het installeren van de Meta tags module. De module is ook bekend onder de naam ‘nodewords’.
Drupal heeft een internationalisatie-module. Ik heb hier persoonlijk geen ervaring mee, maar het schijnt dat als je deze module gebruikt, je bij de blog van users URL?s als hieronder krijgt met dezelfde content:
site.nl/en/blog/username
site.nl/nl/blog/username
Drupal heeft een module waarmee je automatisch een Google Sitemap kan maken, de gsitemap module . Om eerlijk te zijn weet ik niet precies of een Google Sitemap nu zoveel effect op de indexatie heeft, maar het zal je in ieder geval ook geen windeieren leggen ;-)
Over de hoeveelheid duplicate content die Drupal genereert heb je gelijk, ik ben sinds gisteren klaar met mijn nieuwe SEO website waar ik ook Drupal op gebruik, maar inderdaad zit er veel duplicate content in, de index en de /blog zijn al precies hetzelfde, net als hier trouwens. Maar ik vind het zelf eerlijk gezegd beter om dit op te lossen met robots.txt dan met rel=”nofollow” want als er op een andere site iemand naar je commentform linkt zonder nofollow dan wordt die duplicate content ook geïndexeerd, en dan maak je het je concurrenten wel heel makkelijk je een duplicate content penalty te geven :). Bij robots.txt niet.
Erg handig.
In de Autopath module die je noemt zit in de General settings een optie om Update Actions te zetten.
Een van die opties is om niets te doen zodat de oorspronkelijke URL altijd ongewijzigd blijft.
Je kunt dan de titels later toch ongestraft aanpassen.
Goede tip Hummerbie, dit wist ik niet :)
De rewrite regels kunnen nog een kleine tweak gebruiken:
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteCond %{REQUEST_URI} !^.*xmlrpc.php$ [NC]
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
Zo is xmlrpc nog altijd op de url zonder www prefix bereikbaar. Het kan nodig zijn als je distrib. auth. gebruikt om op andere sites aan te melden als user@example.com.
Voor duplicate content is er ook nog de globalredirect module. Die zorgt ervoor dat als je een alias maakt voor een node, alle requests voor node/ geredirect worden naar dat alias. Of het SEO wise veel uitmaakt weet ik niet, maar ik vind het op zich veel cleaner dat nodes geen meerdere urls hebben.
Kan ik Drupal ook “op de achtergrond” installeren? In een subdirectory o.i.d. zodat bezoekers hier niets van merken? Totdat ik de boel live zet natuurlijk.
Beetje cpu intensief maar globalredirect
schijnt het zeer goed te doen om duplicate content tegen te gaan.
Leuk trouwens Erik Jan die posts over drupal.
Global redirect is inderdaad een goede module, en canonical tags kun je er tegenwoordig ook mee aangeven ter voorkoming van duplicate content. (ipv 301 redirects)