Duplicate content bij Drupal

Door Erik-Jan op 1 juni 2007

Trefwoorden: .

Voor een nieuw project heb ik Drupal gebruikt. Net als bij de installatie van dit CMS op Netters, viel het me op hoeveel duplicate content Drupal bouwt. Omdat ik niet een potentiële penalty wil krijgen, heb ik maatregelen genomen om bepaalde dubbele content niet te laten indexeren. Ik maak trouwens gebruik van een installatie met zgn. “schone URL’s”.

Printpagina’s

De printpagina’s zijn het makkelijkst weg te werken. Zo gebruik ik de book-module, waarbij ik zelf handmatig een URL alias opgeef. De book-module maakt eigenhandig een printvriendelijke versie aan. Het mooie (voor ons vraagstuk) is dat de URL van deze printvriendelijke pagina niet te bereiken is via de URL alias, maar alleen via de originele URL /book/export/html/$id, waarbij $id het ID van de pagina is. Het is dus erg makkelijk deze pagina’s niet te laten indexeren m.b.v. de robots.txt:

Disallow: /book/

Comments

Als je Drupal dusdanig hebt geconfigureerd dat gebruikers commentaren mogen plaatsen, komen er onderaan je berichten links als /comment/reply/1#comment-form. Deze pagina’s de originele content waar je op wilt reageren samen met een formulier. Uiteraard is dit geen unieke content en ook deze directory disallowen we voor zoekmachines in onze robots.txt.

Frontpage/blog

Op mijn homepage staat alleen een blog. Dit betekent dat /blog?page=1 en /node?page=1 dezelfde content hebben. Als homepage heb ik trouwens niet /node, maar simpelweg / staan. Oftewel, /node kan ook ge-disallowed worden in de robots.txt.

Echter, er is nog een probleem. De navigatie onderaan mijn homepage verwijst standaard naar de diverse /node-pagina’s. Het is natuurlijk voor de spiderbaarheid van de site beter als dit simpelweg /blog-pagina’s zijn. Daarom wil ik die links aanpassen. Nu is de plek waar die code gemaakt wordt lastig te vinden, maar er is een andere weg. Het is namelijk goed te doen om de aangemaakte links te wijzigen in de juiste links. Dit doen we in /index.php d.m.v. Output Buffering.

Bovenaan de pagina zetten we via ob_start(); de output buffering aan. Onderaan de pagina vangen we de gegenereerde content op en wijzigen we de links, waarna we de HTML-pagina outputten:

Opmerking 1:
Omdat ik op wielrennerij.nl de enige blogger ben, is de hele blog van de site ook via mijn persoonlijke blog te bereiken op /blog/1 (1 is mijn ID). Daarom heb ik /blog/1 ook afgesloten voor robots.

Opmerking 2:
Drupal heeft wel een SEO-vriendelijke navigatie, op het gebruik van $_GET-parameters na. Vaak is het zo dat de eerste pagina van een navigatiesysteem vaak via zowel /blog als /blog?page=1 bereikbaar is, maar dat is bij Drupal niet het geval. Netjes.

$data = ob_get_contents();

$data = str_replace('/node?page=>‘,
‘/blog?page=’,
$data);

ob_end_clean();

echo $data;
?>

Conclusie

Als je deze wijzigingen doorvoert, heb je het grootste deel van de duplicate content verwijderd. Als ik iets gemist heb, hoor ik dat graag.

Opmerking 3:
Ulco wijst me er terecht op dat veel Drupal-installaties feeds voor berichten plaatsen. Deze zijn vaak te vinden op http://www.site.nl/bericht-naam/feed. Deze dienen uiteraard ook niet geïndexeerd te worden. Aan gezien de URL wat lastig in robots.txt te vangen is (kan wel), kun je net zo makkelijk een rel="nofollow" gebruiken. Dit geldt echter niet voor mijn wielren-site, want daar heb ik geen feeds ;-)


Je kunt een reactie, achterlaten of een trackback van uw eigen site.

Reageer!