# Canonical URL

> A teszt azt nézi, van-e canonical link a nyitóoldalon, és ugyanarra a domainre mutat-e. Ez mondja meg a keresőknek, melyik cím az oldal végleges címe.

Ugyanaz a tartalom gyakran több címen is elérhető: www-vel és anélkül, záró perjellel és anélkül, paraméterekkel (például követőkóddal). A canonical link megmondja a keresőknek, melyik ezek közül a végleges cím, így nem szóródnak szét a jelek, és nem a nem kívánt változat jelenik meg a találatok között.

A Google ezt jelzésnek (signal) tekinti, nem kötelező utasításnak: a dokumentáció szerint a `rel="canonical"` link erős jelzés, de a Google más jelekkel együtt dönti el, melyik címet választja.

## Hogyan mérjük

A riport a nyitóoldal HTML-jében megkeresi az első `<link>` elemet, amelynek `rel` értékében szerepel a `canonical` szó, és kiolvassa a `href` értékét. A relatív címet a nyitóoldal végső címéhez viszonyítva értelmezi.

- **Megfelelő:** van canonical link, a címe érvényes, és a gazdagépneve (a `www.` előtagot figyelmen kívül hagyva) megegyezik a nyitóoldal végső gazdagépnevével.
- **Hiba:** nincs canonical link vagy üres a `href`, a cím nem értelmezhető, vagy másik domainre mutat.
- **Nem mérhető:** nem sikerült HTML-t kapni.

A teszt súlyossága a riportban: közepes. Mit nem néz a teszt:

- Csak a gazdagépnevet hasonlítja össze: az útvonalat nem. Egy másik aloldalra mutató canonical is megfelelőnek számít.
- Nem ellenőrzi, hogy a `<link>` a `<head>` részben van-e, és a HTTP `Link` fejlécet sem nézi.
- Csak a nyitóoldalt méri.

## Hogyan javítsd

A Google tanácsai:

- a `<link rel="canonical">` elem a `<head>` részbe kerüljön, mert csak ott fogadja el;
- teljes (abszolút) címet adj meg, protokollal és gazdagépnévvel, nem relatívat;
- a kanonikus oldal is mutasson önmagára (önhivatkozó canonical);
- egy módszert válassz (HTML-elem vagy HTTP-fejléc), mert a kettő együtt hibára ad lehetőséget.

### HTML

A nyitóoldal sora (minden oldal a saját címére mutasson):

```html title="HTML"
<link rel="canonical" href="https://pelda.hu/">
```

Ha a közös fejlécbe írod így, a keresők minden oldalt a nyitóoldal másolatának vehetnek. Ha már van canonical sor, azt cseréld le, ne vegyél fel mellé másikat.

### WordPress

A WordPress maga ír canonical sort, de a fejlesztői dokumentáció szerint a `rel_canonical()` függvény csak egyedi tartalomnál (bejegyzés, oldal) ad ki sort. Bejegyzéslistás nyitóoldalon nem. Ilyenkor ezt a kis kiegészítés (mu-plugin) pótolja, csak a nyitóoldalra, az első oldalra:

```php title="wp-content/mu-plugins/hwp-report-canonical.php"
<?php
add_action( 'wp_head', function () {
    if ( is_front_page() && is_home() && ! is_paged() ) {
        echo '<link rel="canonical" href="' . esc_url( home_url( '/' ) ) . '">' . "\n";
    }
} );
```

Bedrock-telepítésen a fájl helye `web/app/mu-plugins/`. Ha SEO-bővítményt használsz, az is ír canonical sort: ilyenkor annak a beállítását nézd meg, és erre a kódra nincs szükség.

## Hogyan ellenőrizd

1. Futtasd újra a riportot.
2. Parancssorból:

```bash title="Terminál"
curl -s https://pelda.hu/ | grep -i "rel=.canonical"
```

3. A Search Console URL-ellenőrzője megmutatja, melyik címet választotta a Google kanonikusnak ("A Google által kiválasztott kanonikus URL"), ami eltérhet a megadottól ([hogyan használd](https://hub.hellowp.io/hu/knowledge-base/useful-tools/google-search-console/)).
