Teil 19 von 22

Paginierung und Facettennavigation ohne aufgeblähten Index

Paginierung und Facettennavigation ohne aufgeblähten Index

Kategorielisten, Blog-Archive und gefilterte Ansichten erzeugen mehr URLs als der gesamte Rest der Website zusammen – und die meisten davon sollten nicht indexiert werden. Hier stirbt das Crawl-Budget, und hier entstehen die eigentlichen Duplikationsprobleme. Das Ziel: Der Crawler erreicht jedes Produkt und jeden Beitrag, und die Müll-Permutationen von URLs bleiben außerhalb des Index.

Paginierung: echte URLs, Canonical auf sich selbst

  • Jede Seite bekommt eine echte, verlinkbare URL: /blog/page/2 oder ?page=2. Seite 2 muss als HTML existieren, das der Crawler anfordern kann.
  • Jede Seite setzt das Canonical auf sich selbst – nicht auf Seite 1. Ein Canonical von Seite 2 auf Seite 1 sagt Google „Seite 2 ist ein Duplikat", und alles, was nur von Seiten 2+ verlinkt wird, fällt still aus der Entdeckung. Das ist noch immer der häufigste Paginierungsfehler.
  • rel="prev/next" hat Google 2019 abgeschafft – heute zählen gewöhnliche <a href>-Links zwischen den Seiten (nummerierte Links führen den Crawler schneller zu tiefen Seiten als eine „Nur weiter"-Kette).
  • Titel sollten sich unterscheiden: Ergänzen Sie „– Seite 2", um nicht Titel-Duplikate zu vervielfachen.

In Next.js können pfadbasierte Seiten vollständig statisch sein:

// app/blog/page/[num]/page.tsx
export async function generateStaticParams() {
  const pages = Math.ceil((await getPostCount()) / PAGE_SIZE);
  return Array.from({ length: pages - 1 }, (_, i) => ({ num: String(i + 2) }));
}

Infinite Scroll: gepaart mit echten Seiten

„Mehr anzeigen" und endlose Listen sind Client-Mechaniken, und Crawler scrollen nicht. Ein solides Muster: Behalten Sie paginierte URLs als crawlbares Gerüst, aktualisieren Sie die Adressleiste beim Scrollen über die History API (/page/3, sobald der Nutzer den dritten Abschnitt erreicht), und lassen Sie jede solche URL beim direkten Aufruf ihren Abschnitt serverseitig rendern. Der Nutzer bekommt einen flüssigen Feed, der Crawler Seiten.

Facetten: kombinatorische Explosion

Eine Kategorie mit 6 Filtern zu je 10 Werten ergibt Millionen von URL-Permutationen. Teilen Sie Facetten in drei Stufen:

  1. Indexierungswürdig – Kombinationen mit echter Nachfrage und stabilem Sortiment („rote Laufschuhe", „Wohnungen mit Balkon in Warschau"). Geben Sie ihnen saubere statische Pfade (/running-shoes/red), einzigartige Titel und Einleitungen, Canonical auf sich selbst und einen Platz in der Sitemap. Praktisch sind das Programmatic-SEO-Seiten – wenden Sie dieselbe Schwelle für einzigartigen Wert an.
  2. Nützlich, aber nicht indexierbar – Sortierungen, Preisregler, Mehrfachauswahl. Belassen Sie sie als Query-Parameter, robots: { index: false, follow: true }, Canonical auf die Basiskategorie.
  3. Crawl-Fallen – Sitzungsparameter, unendliche Kombinationen aus Kalender und Datum. Sperren Sie sie in der robots.txt, damit sie das Crawl-Budget gar nicht erst verbrauchen (noindex erfordert, jede URL zu crawlen, damit es bemerkt wird).

Lassen Sie Filter niemals Links erzeugen, über die der Crawler in Stufe 3 gelangt – rendern Sie diese Bedienelemente als Buttons/Formulare, nicht als <a href>.

Checkliste:

  • Paginierungsseiten: echte URLs, Canonical auf sich selbst, nummerierte <a>-Links, unterschiedliche Titel
  • Keine Canonicals auf Seite 1; nichts ist ausschließlich über Infinite Scroll erreichbar
  • Facetten in Stufen geteilt: indexierbar / noindex,follow / in robots gesperrt
  • Indexierungswürdige Kombinationen erhalten statische Pfade, einzigartigen Inhalt und Sitemap-Einträge
  • Fallen-Parameter werden nie als crawlbare <a href>-Links gerendert

Soll das lieber jemand für Sie erledigen?

Ich prüfe und behebe technisches SEO auf Next.js-Websites — Indexierung, Geschwindigkeit, hreflang und Sichtbarkeit in KI-Suchen.

Leistung technisches SEO