Das Projekt landete im Februar auf meinem Schreibtisch. Ein Online-Shop mit 2,3 Millionen URLs, von denen gerade mal 340.000 im Google-Index auftauchten. Der Rest? Verschwendetes Crawl-Budget.
Die erste Woche verbrachte ich komplett in den Logfiles. 89 GB an Server-Logs aus drei Monaten. Der Googlebot crawlte täglich etwa 180.000 URLs, aber 62 Prozent davon waren Filterkombinationen und Session-IDs. Produkte mit echtem Traffic? Die wurden teilweise nur alle 14 Tage besucht.
Hier wird es interessant: Die robots.txt hatte 340 Zeilen. Jemand hatte über Jahre hinweg immer wieder Zeilen hinzugefügt, ohne die bestehenden zu überprüfen. Manche Regeln widersprachen sich. Andere blockierten Bereiche, die längst nicht mehr existierten.
Ich reduzierte die Datei auf 23 Zeilen. Alle Parameterfilter gingen in die Google Search Console. Facettierte Navigation mit rel canonical statt noindex. Das URL-Chaos von 2,3 Millionen schrumpfte technisch auf 890.000 relevante Seiten.
Dann die Paginierung. Der Shop nutzte eine endlose Scroll-Funktion, die aber serverseitig klassische Paginierungs-URLs generierte. Seite 1 bis 340 für manche Kategorien. Der Bot crawlte sich da durch wie verrückt. Lösung: View-All-Seiten für Kategorien unter 200 Produkten, für größere Kategorien saubere Paginierung mit rel next/prev bis Seite 10, danach noindex.
Die Ladezeiten waren ein separates Problem. TTFB lag bei durchschnittlich 2,8 Sekunden. Der Googlebot brach 18 Prozent aller Crawls ab, bevor die Seite vollständig geladen war. Nach Serveroptimierung und CDN-Einrichtung: TTFB bei 0,4 Sekunden.
Nach drei Monaten: 720.000 URLs im Index. Nicht alle 890.000, aber die richtigen. Die Crawl-Rate verdoppelte sich auf produktrelevante Seiten. Organischer Traffic stieg um 43 Prozent. Die interessanteste Erkenntnis? 80 Prozent der Verbesserung kamen aus dem Aufräumen, nicht aus neuen Features.