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/2oder?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:
- 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. - Nützlich, aber nicht indexierbar – Sortierungen, Preisregler, Mehrfachauswahl. Belassen Sie sie als Query-Parameter,
robots: { index: false, follow: true }, Canonical auf die Basiskategorie. - 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
