# Kanonisk URL

## Vad det är

En kanonisk URL är den adress som en sida med flera adresser pekar ut som sitt
original: kopian som den ber sökmotorer och andra konsumenter att indexera, visa
och tillgodoräkna. Namnet kommer från märkningen som bär uppgiften, ett
`link`-element med `rel="canonical"`, och därför kallas samma sak också kanonisk
länk, canonical-tagg eller bara rel=canonical. I vardagligt tal säger många
svenska utvecklare helt enkelt canonical.

```html
<link rel="canonical" href="https://example.com/guide/" />
```

Dubbletter uppstår oftare än någon planerar för. En och samma artikel kan nås
med och utan `www`, över `http` och `https`, med en spårningsparameter på
slutet, sorterad på ett annat sätt, som utskriftsvy eller återpublicerad på en
annan värd. RFC 6596, som publicerades 2012, registrerade relationen och gav den
dess enda hårda regel: målet måste identifiera innehåll som antingen är en
dubblett av den hänvisande sidan eller en övermängd av den, alltså innehåller
allt den har och mer. Inom den regeln får målet vara sidan själv, ligga på ett
annat värdnamn eller använda ett annat URI-schema. HTML-standarden beskriver det
som ”preferred URL for the current document”. En fil som saknar HTML-huvud, som
en PDF, kan skicka samma besked i HTTP-headern `Link` med `rel="canonical"`.

En kanonisk URL är en vink och ingen order. RFC 6596 låter program bortse från
en utpekning som är felaktig, och dokumentationen från Google räknar
omdirigeringar och rel=canonical som starka signaler och att sidan står i en
webbplatskarta som en svag. Där en sida inte deklarerar något väljer sökmotorn
en kopia själv.

Den står bredvid tre verktyg som är lätta att blanda ihop med den. En permanent
omdirigering tar bort dubbletten för människor lika väl som för maskiner, och är
därför det starkare valet så fort den extra adressen inte har något skäl att gå
att nå. Direktivet `noindex` håller en sida helt utanför indexet, vilket är ett
annat utfall än att slå ihop den med en annan sida. Och `hreflang` knyter ihop
sidor som är översättningar av varandra; översättningar är likvärdiga, och ingen
av dem är en dubblett av en annan.

## Varför det spelar roll

Beslutet som en kanonisk URL fattar är vilken adress som blir den indexerade,
och det enda verkliga valet står mellan att fatta det med avsikt och att låta
någon annan fatta det. Sökmotorer straffar inte dubblerad text så mycket som de
slår ihop den: de behåller en kopia och viker in resten i den. Kopian som
behålls är den som människor ser i sökresultaten, den som länkar till varje
variant tillgodoräknas och den som en sökrobot återvänder till. Lämnas valet åt
sökmotorn kan den kopian bli versionen med en kampanjparameter, en
stagingserver som läckte ut eller en partners återpublicering i stället för
originalet.

Omdirigering eller kanonisk länk är mest en fråga om människor. Behöver ingen
den andra adressen, så omdirigera den permanent, och problemet försvinner för
varje klient på en gång; RFC 6596 ber själv författare att utesluta en permanent
omdirigering innan de tar till länken. Måste kopian gå att nå, för att en
kampanjlänk pekar på den, en utskriftslayout bor där eller en annan webbplats
bär artikeln för sin egen publik, då är den kanoniska länken rätt verktyg,
eftersom den avgör frågan för indexen och lämnar läsarna i fred.

Kostnaden ligger i konsekvensen, inte i taggen. En rad i sidhuvudet är billig.
Varje annat ställe som namnger sidans adress måste hålla med den: `og:url` som
länkförhandsvisningar använder, identifierarna i strukturerad data,
webbplatskartan och webbplatsens egna interna länkar. Om två av dem namnger en
adress och den tredje en annan gör sidan två påståenden om sig själv, och en
konsument kan tro på vilket som helst. Det en kanonisk URL avgör är vilken
adress allt anseende som innehållet förtjänar knyts till.

## Så ser det ut i praktiken

Dubbletterna är inbyggda i hur den här webbplatsen publiceras.
[Varje sida kommer ut i fyra format på tre språk](/sv/portfolio/built-a-multilingual-static-site-in-hugo-126/),
och samma innehållsträd byggs sedan sju gånger till, en gång per fokuserad
underdomän, så en och samma text finns på flera adresser.

Mallarna löser dubbletterna med en enda regel: en sida är sitt eget original
bara om den skrevs för den adress den serveras från. På huvudwebbplatsen gäller
det allt, så varje sida namnger sig själv. En fokuserad underdomän har skrivit
sin egen startsida och inget annat, så den sidan namnger sig själv, medan det
speglade arbetet, de delade sidorna och varje lista som generatorn bygger pekar
på huvudwebbplatsens kopia på samma sökväg. Standardläget går åt det säkra
hållet: allt pekar hem om inget annat sägs, och en sida som förtjänar en egen
identitet måste be om den i sin front matter, där begäran syns. En ny sorts sida
ärver därför det försiktiga svaret i stället för att i tysthet utge sig för att
vara ett original.

Värdet räknas ut i en enda mall och läses överallt där det förekommer: av
`rel="canonical"`, av `og:url` och `twitter:url`, och av `@id` och `url` i
sidans nod för strukturerad data. Webbplatskartan och språkalternativen ställer
samma fråga i ja- eller nej-form och skrivs bara ut när den kanoniska adressen
är sidans egen, eftersom att be om att en adress ska indexeras och samtidigt
peka ut en annan som original är en motsägelse som en sökrobot kan lösa genom
att lita på ingen av dem. En kopia på en fokuserad värd renderas ändå i sin
helhet, och dess språkväljare fungerar; det den håller inne är begäran om att
bli indexerad, aldrig innehållet. Markdown-tvillingen annonseras från HTML-sidan
med `rel="alternate"` och sin mediatyp, vilket HTML-standarden läser som samma
dokument i ett annat format och inte som en konkurrerande sida.

En kontroll av det byggda resultatet säkerställer att varje sida har exakt en
kanonisk URL, absolut och självrefererande, och att varje intern länk pekar på
den adress som länkens mål kanoniseras till.

## Var det går fel

**Sökresultaten visar en adress som ingen valde.** En spårningsparameter, en
vilsen värd eller en spegel dyker upp som den listade URL:en. Sidan deklarerar
antingen ingen kanonisk URL, eller deklarerar en medan dess post i
webbplatskartan, `og:url` och de interna länkarna namnger något annat, så
sökmotorn väger blandade signaler och väljer själv. Skriv ut en absolut kanonisk
URL på varje sida, också en självrefererande på originalet, och härled
adresserna i webbplatskartan, förhandsvisningen och den strukturerade datan från
samma värde.

**Sida två i en serie faller ur indexet.** Varje sida i en paginerad lista eller
en uppdelad artikel pekar ut sida ett som sin kanoniska URL. Sida ett är varken
en dubblett eller en övermängd av sida två, så allt som bara finns på senare
sidor kan behandlas som dubblett och ignoreras, en risk som RFC 6596 varnar för
uttryckligen. Låt varje sida i en serie namnge sig själv, eller peka alla sidor
mot en enda visa-allt-sida som verkligen innehåller allt.

**En dubblett som blockerats i robots.txt ligger kvar i sökresultaten, eller så
försvinner originalet med den.** Att blockera en dubbletts adress i robots.txt
hindrar sökroboten från att läsa sidan, också dess kanoniska länk, och Google
påpekar att en blockerad URL ändå kan indexeras utan sitt innehåll. Att märka
dubbletter med `noindex` tar bort dem helt ur sökningen i stället för att föra
över det de har förtjänat till originalet. Låt dubbletterna vara åtkomliga för
sökrobotar och låt en kanonisk URL eller en omdirigering sköta sammanslagningen.

**Den deklarerade kanoniska URL:en ignoreras.** Målet omdirigerar permanent
någon annanstans, namnger en egen kanonisk URL, svarar 404 eller konkurrerar med
ett andra canonical-element på samma sida; ett skript kan också skriva om länken
efter att HTML-koden har kommit fram. Vart och ett av dessa fall gör utpekningen
felaktig, och RFC 6596 låter en konsument falla tillbaka på sitt eget omdöme.
Peka på den slutliga adressen som svarar 200, skriv ut ett enda element i
huvudet på den HTML som serveras, och låt inget skript ändra det efteråt.

## Läs mer

- [RFC 6596: The Canonical Link Relation](https://www.rfc-editor.org/rfc/rfc6596)
  — registreringen, regeln om dubblett eller övermängd och de utpekningar som
  ska undvikas.
- [HTML Standard: link type ”canonical”](https://html.spec.whatwg.org/multipage/links.html#link-type-canonical)
  — hur HTML definierar nyckelordet och var det får stå.
- [RFC 8288: Web Linking](https://www.rfc-editor.org/rfc/rfc8288) — HTTP-headern
  `Link`, som bär en kanonisk URL för filer utan HTML-huvud.
- [Google Search Central: consolidate duplicate URLs](https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls)
  — hur en sökmotor väger omdirigeringar, kanoniska URL:er och webbplatskartor
  mot varandra.

<https://engineer.company/sv/glossary/canonical/>
