Deel 3 van 22

Canonical en hreflang: één pagina, één adres

Canonical en hreflang: één pagina, één adres

Dubbele content kan op meertalige sites en pagina's met parameters onduidelijkheid bij het indexeren veroorzaken. Twee mechanismen helpen om dat te beheersen.

Canonical wijst naar de voorkeurs-URL

Het vertelt zoekmachines welke URL de voorkeur heeft wanneer meerdere adressen dezelfde content serveren (trackingparameters, schuine strepen, paginatie):

export async function generateMetadata({ params }): Promise<Metadata> {
  return {
    alternates: {
      canonical: `/blog/${params.slug}`,
    },
  };
}

hreflang koppelt de taalversies

Het vertelt zoekmachines welke taalversies bestaan en helpt bij het kiezen van de juiste. Hoe je de adressen ophaalt, hangt af van je contentmodel; het voorbeeld gaat ervan uit dat getLocalizedUrls() de echte URL van elke versie teruggeeft:

export async function generateMetadata({ params }): Promise<Metadata> {
  const { lang } = params;
  const localizedUrls = await getLocalizedUrls(params);

  return {
    alternates: {
      canonical: localizedUrls[lang],
      languages: {
        ...localizedUrls,
        "x-default": localizedUrls.en,
      },
    },
  };
}

Veelgemaakte implementatiefouten

  • hreflang moet wederkerig zijn. Verwijst de EN-pagina naar de PL-versie, dan moet de PL-pagina terugverwijzen naar EN, anders kan Google de hele groep negeren.
  • Elke pagina moet zichzelf bevatten in de languages-map.
  • Gelokaliseerde slugs: staat een Pools bericht onder een andere slug, dan moet hreflang naar de echte gelokaliseerde URL wijzen en niet mechanisch naar /pl/ + dezelfde slug. Genereer de map uit de contentbron, hardcode haar niet.
  • x-default vangt gebruikers op wier taal je niet ondersteunt: richt hem op de hoofdlocale.
  • Canonical moet naar een pagina leiden die 200 teruggeeft en geen noindex heeft; een canonical naar een doorverwijzende URL wordt genegeerd.

Checklist:

  • Zelfverwijzende canonical op elke indexeerbare pagina
  • hreflang gegenereerd uit echte gelokaliseerde slugs, wederkerig in alle richtingen
  • x-default aanwezig
  • URL-parameters (utm, filters, sortering) gecanoniseerd naar het schone adres

Laat je dit liever door iemand anders doen?

Ik audit en herstel technische SEO op Next.js-websites — indexering, snelheid, hreflang en zichtbaarheid in AI-zoekmachines.

Dienst technische SEO