fix(seo): URLs aus der Site auflösen statt aus dem Request-Host #81
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/canonical-urls-not-request-host"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
P1 aus dem Live-Audit nach dem Deploy. Die Startseite hat sich selbst als
http://localhost/deklariert.Refs #58Befund
Live gemessen auf
https://philflow.io/:Auf
/en/dagegen alles richtig:hreflang="de-DE" href="https://philflow.io/".Das Paar ist damit nicht reziprok — die eine Seite verweist auf einen Host, den die andere nicht kennt. Google verwirft in dem Fall nicht das einzelne Tag, sondern das komplette Sprach-Cluster der Startseite. Genau die Reparatur aus #62 war damit auf der wichtigsten Seite wirkungslos.
Die übrigen 21 Seiten waren sauber, deshalb ist es bei meiner Prüfung durchgerutscht: ich hatte hreflang auf
/blog,/en/blog,/impressumund dem Kategorie-Archiv verifiziert — nicht auf/.Ursache
og:url,twitter:url, die hreflang-Selbstreferenz,x-defaultund diecanonicalUrlim JSON-LD stammten auscraft.app.request.absoluteUrl. Diese Variable spiegelt den Host-Header des jeweiligen Aufrufs. Ein interner Aufruf gegenlocalhosterzeugt damit eine Seite, die sich selbsthttp://localhost/nennt — und Blitz speichert genau diese Fassung und liefert sie an alle echten Besucher aus.Fix
Alle fünf Stellen lösen jetzt gegen die Site auf, nicht gegen den Request:
seo.canonicalfür die Social-Tags,element.urlbeziehungsweisesiteUrl()für hreflang. Die eigene Site wird damit genauso behandelt wie jede andere — der Sonderfall im Code entfällt ersatzlos.Beleg
Lokal mit gefälschtem Host-Header:
Vorher hätte beides den fremden Host getragen.
grep -rn absoluteUrl templates/liefert keinen Treffer mehr.Sofortmaßnahme, bereits erfolgt
Der Blitz-Cache wurde geleert und mit korrektem Host neu gewärmt, die Startseite liefert live wieder
https://philflow.io/. Ohne diesen Fix kehrt der Zustand aber beim nächsten internen Aufruf zurück.Empfehlung als Folge-Ticket
Zusätzlich
allowedHostsinconfig/general.phpsetzen, damit Craft Aufrufe mit fremdem Host-Header von vornherein abweist. Das ist Härtung gegen Host-Header-Injection allgemein, nicht nur gegen dieses Symptom — braucht aber eine Prüfung, welche Hosts Healthchecks und Traefik intern verwenden, und gehört deshalb nicht in diesen Fix.🤖 Generated with Claude Code
https://claude.ai/code/session_017w4iMK5VNobPwXUWXmLKKh