Domain-Kanonisierung (www vs. Apex)
Wenn eine Seite unter
www.und ohnewww.gleichwertig mit Status 200 antwortet, existiert sie für Suchmaschinen doppelt: „Duplicate Content" und zersplitterte Ranking-Signale. Fix ist eine 301-Weiterleitung am Cloudflare-Edge auf eine Vorzugs-Variante, abgesichert durch ein self-referencing Canonical-Tag. Erste Umsetzung: Kluge-Studio auf Cloudflare Pages.
Das Problem
Aufgefallen über einen Seobility-Check der Live-Seite. Auf HTTP-Ebene mit curl geprüft (nicht im Browser, der normalisiert die Adressleiste nur kosmetisch und verschleiert das Problem):
https://www.kluge-studio.de/ -> HTTP 200 (KEINE Weiterleitung)
https://kluge-studio.de/ -> HTTP 200
http://kluge-studio.de/ -> 301 -> https://kluge-studio.de/
http://www.kluge-studio.de/ -> 301 -> https://www.kluge-studio.de/
http -> https griff also schon (SSL-Redirect), aber www und Apex lieferten beide 200, keine leitete auf die andere. Die Seite existierte damit unter zwei gleichwertigen Adressen.
Warum das schadet
- Duplicate Content: Google sieht zwei URLs mit identischem Inhalt und muss selbst raten, welche die Hauptversion ist.
- Zersplitterte Signale: Backlinks und Ranking-Signale verteilen sich auf zwei Hosts, statt sich auf einen zu bündeln. Beide Varianten ranken schwächer als eine gebündelte.
- Verstärkt wurde es dadurch, dass kein Canonical-Tag gesetzt war, also auch kein zweites Signal, das die Hauptversion benannt hätte.
Die Vorzugs-Variante hier ist ohne www (Apex), weil og:url, sitemap.xml und die gesamte interne Verlinkung bereits auf kluge-studio.de zeigen. www muss also auf den Apex weiterleiten, nicht umgekehrt.
Der Fix: 301 am Cloudflare-Edge
Kein Code, sondern eine Redirect Rule im Cloudflare-Dashboard (Zone kluge-studio.de -> Rules -> Redirect Rules). Es gibt eine passende Vorlage „Redirect from WWW to root", die ohne Umbau passt:
- Match: Wildcard-Pattern, Request-URL
https://www.* - Then: Target-URL
https://${1}(der Wildcard${1}trägt Host-Rest + Pfad, strippt also nur daswww.und baut die URL neu auf) - Status:
301 - Permanent Redirect(nicht 302, die Weiterleitung soll dauerhaft sein und Signale vererben) - Haken „Preserve query string" setzen — der Wildcard
*fängt die Query nicht mit ab, ohne den Haken gingen?...-Parameter verloren.
Warnung beim Deploy („This rule may not apply to your traffic / DNS configuration may not be proxying www") ist hier unkritisch: www lief nachweislich schon durch den Cloudflare-Proxy (es lieferte 200 mit der echten Seite), sonst käme dort gar nichts. Grund der Warnung: www hängt am Pages-Custom-Domain statt an einem sichtbaren, proxied DNS-Record, deshalb findet die Heuristik keinen expliziten Eintrag. „Ignore and deploy rule anyway" ist richtig; keinen neuen DNS-Record anlegen, der würde sich mit dem Pages-Setup beißen.
Verifiziert (curl, direkt nach Deploy)
www.kluge-studio.de/ -> 301 -> kluge-studio.de/
www.kluge-studio.de/souveraen -> 301 -> kluge-studio.de/souveraen (Pfad erhalten)
www.kluge-studio.de/website?ref=test&a=1 -> 301 -> kluge-studio.de/website?ref=test&a=1 (Query erhalten)
kluge-studio.de/ -> 200 (keine Schleife)
Der wichtige Gegencheck ist die letzte Zeile: der Apex muss weiter 200 liefern, sonst hätte man eine Redirect-Schleife gebaut.
Zweite Ebene: Canonical-Tag
Der Edge-Redirect fängt Besucher und Bots ab, bevor die falsche Variante überhaupt lädt. Das self-referencing Canonical-Tag (<link rel="canonical" href="https://kluge-studio.de/…">, pro Seite auf die eigene Apex-URL) ist die zweite, unabhängige Absicherung: Es benennt die Hauptversion auch dann, wenn eine Seite doch mal über einen abweichenden Parameter oder Host erreicht wird. Redirect + Canonical zusammen ist der saubere Zustand. In Nuxt global im <head> per useHead/useSeoMeta, damit es mit prerendert (siehe Crawlbarkeit-und-AIO).
Die Kurzfassung
Prüf jede öffentliche Domain einmal mit curl auf alle vier Varianten (http/https mal www/Apex). Genau eine darf 200 liefern, die anderen drei müssen per 301 dorthin zeigen. Der Browser lügt hier durch kosmetische URL-Normalisierung, curl nicht.
Verwandt
Crawlbarkeit-und-AIO · Cloudflare · Kluge-Studio · Nuxt-4 · 00-MOC
