Lær at undgå duplicate content og lær at bruge canonical urls

Tutorial serie part 2

Denne tutorial er efterfølgeren til Tutorial: Lær at implementere URL Rewriting

 

 

Hvad er duplicate content

Duplicate content er for den besøgende ikke det store problem men søgemaskiner går meget op i at du ikke har duplicate content på dit website.

Duplicate content er når det er muligt at tilgå samme indhold via forskellige URL’s – Vi kan tage et kig på mit eget eksempel.

Da min blog kom online for første gang så parameteren til en blog post sådan her ud ?blogId=ID og til at bladre i bloggen ville det være med parameteren ?sideSkilning=ID og efter noget tid opdaterede jeg min blog igen og det ændrede sig nu til ?id=ID og ?pageId=ID og så kom der endnu en opdatering som denne gang bestod af pæne URL’s så lige pludselig havde jeg tre måder at komme ind til samme indhold.

?blogId=ID ?sideSkilning=ID

?id=ID ?pageId=ID

blog/post/ID blog/page/ID

Det første spørgsmål er om det er “farligt” at have duplicate content på din hjemmeside.

 

 

Duplicate content og søgemaskiner

Hvis du har studeret lidt SEO har du sikkert løbet ind i mottoet Content is King og i en vis grad er det også sandt som det er sagt fordi hvis der er noget som søgemaskinerne elsker så er det unikt indhold, men så meget som unikt indhold er elsket så er duplicate content lige så meget hadet af søgemaskinerne.

 

Content is King

Meta-tags og meget andet er underordnet, den rigtige “konge” er indholdet på din side, hvis du flere gange om ugen tilføjer nyt og unikt indhold vil søgemaskinerne elske din hjemmeside, fordi et af formålene med en søgemaskine er at vedligeholde en indeks over alt indhold på internettet så søgemaskinen up to date og brugbar, hvis søgemaskinen tit ser at du bidrager med unikt indhold vil den i højere grad besøge din hjemmeside og indekere det nye indhold hurtigere og se at du er aktiv på området, det er en af kerneområderne for at have en god SEO.

 

Fjernet på grund af duplicate content

Hvis søgemaskinerne finder det samme indhold flere steder på din hjemmeside eller det er muligt at komme ind på samme indhold via forskellige URL’s så vil søgemaskinerne tro at du prøver at snyde dem ved at sige du har mere indhold end du faktisk har.

Du kan risikere at bliver fjernet fra søgemaskinerne hvis de finder ud af eller tror du har duplicate content, du bliver selvfølgelig ikke fjernet efter én dag med duplicate content, jeg havde faktisk to ingange til mine blog indlæg, både blogId=ID id=ID i omkring en to-tre uger uden at blive fjernet fra Google’s søgemaskine, men det er dumt at tage chancen i at have flere entries til samme indhold i en længere periode fordi hvis du først bliver fjernet fra en søgemaskine skal du ikke regne med at de acceptere din side igen efter en uge, der kan gå måneder før din side bliver accepteret igen hvis altså fejlen er rettet.

 

Mit tilfælde og min løsning

I mit tilfælde så det sådan her ud for ikke så længe siden

?blogId=ID ?sideSkilning=ID

?id=ID ?pageId=ID

blog/post/ID blog/page/ID

Tre forskellige måder at tilgå samme content, det er ikke bare duplicate content det er triple duplicate content! Og der er vidst ingen achievement for det så vidt jeg ved 🙂

 

Fra de gamle parametre til de nye parametre

På det her tidspunkt har jeg allerede implementeret pæne URL’s det er derfor der er tre måder at tilgå samme content ellers have det kun været to.

Mit første mål var at fortælle søgemaskinerne at de gamle parametre ikke fandtes mere og skulle overskrives til de nye URL’s

Så var spørgsmålet: Skal jeg med .htaccess henvise fra ?blogId=ID til ?id=ID eller til blog/post/ID

Jeg valgte at de skulle henvise til de nye pæne URL’s fordi det er også dem som er valgt i canonical URL.

Hvad en canonical URL er vender jeg tilbage til senere.

RewriteCond %{REQUEST_URI} blog.php$
RewriteCond %{QUERY_STRING} blogId=([0-9]+)$
RewriteRule ^blog\.php$ http://www.kim-cv.com/blog/post/%1? [L,NC,R=301]
  1. Første condition er: Den besøgte fil skal være blog.php
  2. Anden condition er: blog.php skal have en URL parameter ved navn blogId med value som svare til denne regular expression ([0-9]+)$
  3. Hvis de to foregående conditions mødes vil vores RewriteRule udføres, den henviser til linket som du ser og det er den pæne URL og med variablen $1 tager vi parameter value’en fra den tilgået fil og sender med den nye URL, jeg har også tilføjet et nyt flag, HTTP code 301.

 

HTTP 301: Permanent moved – Fortæller søgemaskinen / browseren at den fil som den besøgende prøvede at tilgå stadig findes men bare via en anden URL, på den måde kan jeg få overskrevet mine gamle indekserede links i søgemaskinerne med de nye links, det sker dog ikke over en nat men over en længere periode.

Har du lagt mærke til at når man besøgte den gamle URL så havde den ikke blog postens titel med i URL’en, så skulle man tro at søgemaskinerne heller ikke ville overskrive de gamle URL’s med de nye URL’s + blog post titlerne, men fordi jeg bruger canonical URL så tager de blog postens titel med.

Men der er endnu et problem. Man kan stadig tilgå samme content via blog.php?id=ID“som er den nuværende rigtige fil” og blog/post/ID

Via vores .htacces henviser vi fra den pæne url til blog.php?id=ID så hvis vi også henviste fra vores blog.php?id=ID til den pæne URL så vil det køre i en konstant cirkel så det er heller ikke en mulighed, men her er løsningen. Canonical URL.

 

Canonical URL

Mine blog posts kan tilgåes via den pæne URL men stadig også via den normale fil blog.php?id=ID og jeg kan ikke henvise fra den normale fil til den pæne URL fordi den pæne URL henviser til den normale fil og så vil det hele køre i et loop.

En canonical URL skal ligge i head delen af dit dokument.

Et eksempel på en canonical URL

<link rel='canonical' href='http://www.kim-cv.com/blog'/>

Canonical URL er som at fortælle søgemaskinen: alligevel min rigtige URL er X så vil jeg foretrække du kalder mig Y

Så alligevel søgemaskinerne besøger eksempelvis kim-cv.com/blog.php så vil min canonical fortælle søgemaskinen at jeg foretrækker at linket i søge resultaterne skal være kim-cv.com/blog

Jeg vil råde dig til at hvis du vil bruge canonical URL så skal du holde din .htaccess og intern linking striks med den URL struktur som du har planlagt, det nytter ikke at på din side linker du til bloggen med blog.php men canonical siger /blog og der er ingen .htaccess som har en rule på blog/ til blog.php

Det er enten eller.

Før skrev jeg om at jeg ikke kunne få blog postens titel med i URL’en når jeg HTTP 301 redirectede fra den gamle URL til den nye URL men siden vi ved hvilken blog post vi ser på fordi vi får id’et med så kan vi hente blog postens titel ud fra databasen og putte blog postens titel ind i vores canonical URL så søgemaskinerne får den rigtige URL, ligeledes hvis det er en blog så kan du bruge et dynamisk backend sprog som PHP eller ASP.net til at tjekke om brugeren ser på et blog indlæg, en blog side eller bloggens forside og ud fra det vise de rigtige meta-tags og den passende canonical URL.

 

 

Husk

Dine interne links, .htaccess og canonical URL skal alle sammen følge din URL struktur, planlægning hjælper meget.

Test din side for mulige måder at tilgå samme content og vær sikker på din side tager højde for det med .htaccess og canonical URL