Canonical-URL beheben, der auf Staging zeigt
Ein Canonical, der auf Staging zeigt, ist fast immer ein Basis-URL-Konfigurationswert, der mit einem Release oder einer Datenbankkopie mitgereist ist; korrigieren Sie den Wert für die Produktionsumgebung, oder leiten Sie den Canonical stattdessen aus dem Anfrage-Host ab statt aus einer gespeicherten Konstante. Die Live-Seiten liefern die ganze Zeit weiterhin 200, weshalb das meist in einer Traffic-Grafik auffällt statt in einem Alarm.
Wie sich das Symptom zeigt
Jede Seite der Live-Website liefert einen Canonical, der einen anderen Host nennt:
curl -s https://example.com/pricing | grep -i 'rel="canonical"'
<link rel="canonical" href="https://staging.example.com/pricing">
Die Search Console zeigt das als "Duplikat, Google hat einen anderen Canonical gewählt als der Nutzer" an, oder als Seiten, die mit einem nutzerdeklarierten Canonical auf einem nie verifizierten Host herausfallen. Da der Staging-Host normalerweise nicht erreichbar, passwortgeschützt oder mit noindex versehen ist, gibt es kein Ziel, auf dem die Konsolidierung landen könnte, die Live-Seiten hören also mit jedem erneuten Crawl schlicht auf zu ranken. Nichts liefert einen 500er und keine Uptime-Prüfung bemerkt etwas, und genau das macht es teuer.
Woher die falsche Basis-URL kommt
- Eine aus Staging wiederhergestellte Datenbank. In WordPress tragen die Options-Zeilen
siteurlundhomeden Staging-Hostnamen in die Produktion, und jede generierte URL folgt ihnen. - Eine Umgebungsvariable im deployten Build. Eine zur Build-Zeit fest einkompilierte Website-URL trägt also den Staging-Wert, egal was die Laufzeitumgebung sagt.
- Ein Framework-Standardhost, pro Umgebung konfiguriert, wobei die Produktionskonfiguration nie aktualisiert wurde, nachdem die Staging-Konfiguration es war.
- Eine fest verdrahtete absolute URL in einem gemeinsamen Layout oder einer SEO-Plugin-Einstellung, während einer Migration geschrieben und nie wieder angefasst.
- Eine auf dem falschen Host gebaute gecachte Seite. Ein CDN oder Full-Page-Cache, mit einem Staging-Build befüllt, liefert veraltetes HTML mit dem Staging-Canonical noch lange, nachdem die Konfiguration korrigiert wurde.
Den Wert beheben, dann die ganze Fehlerklasse beseitigen
- Korrigieren Sie die gespeicherte Basis-URL für die Produktion, an welcher der obigen Stellen auch immer sie zutrifft. In WordPress sind das die beiden Options-Zeilen plus alle absoluten URLs, die von der Staging-Kopie in Beitragsinhalte geschrieben wurden.
- Bauen und deployen Sie neu, falls der Wert einkompiliert ist. Eine Umgebungsvariable ohne Neubau zu ändern lässt den alten Wert im ausgelieferten Bundle zurück.
- Leeren Sie jeden Cache auf dem Pfad, Anwendung, CDN und Edge gleichermaßen. Ein korrigierter Ursprung hinter einem mit Staging-HTML gefüllten Cache wirkt so lange unbehoben, wie der Cache lebt.
- Leiten Sie den Canonical bevorzugt aus dem Anfrage-Host ab, statt eine gespeicherte Konstante zu lesen. Ein aus dem Host aufgebauter Canonical, der die Anfrage bedient hat, kann in der Umgebung, aus der er ausgeliefert wurde, nicht falsch sein, was die ganze Fehlerklasse beseitigt statt nur diesen einen Fall.
- Halten Sie Staging auf andere Weise aus dem Index. HTTP-Authentifizierung oder eine IP-Positivliste am Staging-Host sollten ihn schützen, nicht ein Canonical, und auch kein noindex, das mit einer Konfigurationsdatei mitreisen kann.
Die Korrektur in der Produktion verifizieren
Lesen Sie die Antwort, nicht das Template, denn Plugins, Edge Worker und Caches fügen allesamt Canonicals ein, die in Ihrem Repository nicht auftauchen:
curl -s https://example.com/pricing | grep -i 'rel="canonical"'
curl -sI https://example.com/pricing | grep -i '^link:'
Prüfen Sie dann mehr als eine Seite. Der Canonical wird von einem Template erzeugt, die Startseite richtig zu haben beweist also nichts über Produktseiten, paginierte Listen oder alles, was von einem anderen Layout gerendert wird. In der Search Console zeigt die URL-Prüfung den nutzerdeklarierten Canonical neben dem von Google gewählten, und dass beide nach einem erneuten Crawl übereinstimmen ist die Bestätigung, auf die es ankommt. Dieser erneute Crawl dauert Tage, ein korrigierter Canonical stellt den Traffic also nicht noch am selben Nachmittag wieder her.
Verhindern, dass es wieder passiert
Zwei Absicherungen kosten fast nichts. Die erste ist eine Prüfung zum Deploy-Zeitpunkt: Rufen Sie nach einem Release eine Handvoll Produktions-URLs ab und lassen Sie das Deployment fehlschlagen, wenn ein Canonical einen anderen Host als den Produktionshost nennt. Die zweite ist, danach weiter zu beobachten, denn der Fehler kommt genauso leicht mit einer Datenbankwiederherstellung oder einer Plugin-Einstellung wie mit einem Code-Deploy zurück. HostTrackers HTTP-Prüfungen können gegen den Antwortkörper und die Header prüfen, eine geplante Prüfung kann also so eingerichtet werden, dass sie fehlschlägt, wenn der Canonical-Tag einer Seite nicht dem erwarteten entspricht, und dieser Fehlschlag alarmiert wie jeder andere.
Jedes Template prüfen, nicht nur eine Seite
Beginnen Sie mit einer betroffenen URL im kostenlosen Canonical-Check: Er löst die kanonische URL auf und markiert eine, die auf einen anderen Host zeigt, genau das Erscheinungsbild einer Staging-Canonical. Prüfen Sie dann, indem Sie alle auf einmal betrachten, ob das Problem eine einzelne Seite oder ein ganzes Layout betrifft. Das kostenlose Website-Crawl-Tool durchläuft die Website und meldet einen Canonical-Status pro URL, zusammen mit den noindex-Markierungen und doppelten Inhalten, die einen fehlerhaften Deploy meist begleiten. Um den nächsten an dem Tag zu erfassen, an dem er live geht, aktivieren Sie die Indexability-Option auf einem HTTP-Monitor für Ihre wichtigsten Seiten: Sie liest die kanonische URL bei jeder Prüfung und sendet eine Benachrichtigung, wenn sie sich ändert. SEO-Monitoring beschreibt, wie das funktioniert.