fix(seo): Sitemap mit Blog füllen, Titel und Descriptions reparieren, EN-Seite korrigieren #63
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/sitemap-titles-en-links"
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?
Schritt 2 von 3 gegen den Seobility-Report vom 06.09.2026. Behebt, was Google daran hindert, die Seite vollständig zu finden.
Closes #58Was drin ist
1. Die Sitemap enthielt eine einzige URL
Ursache saß in der Datenbank, nicht im Code: die Sitemap-Konfiguration stammte vom 31.10.2024 und enthielt vier Bereiche — zwei davon zeigten auf gelöschte Sections und erzeugten leere Dateien, Blog und Blog-Index waren nie eingetragen worden. Der Blog kam nach dem Sitemap-Setup dazu.
Jetzt sind Blog, Blog-Index und die Blog-Kategorien drin, die verwaisten Einträge raus. Weil diese Einstellung in der Datenbank und nicht im Project-Config liegt, steckt sie als Migration (
migrations/m260906_120000_fix_sitemap_config.php) im Repo — sie löst Sections über Handles statt über IDs auf und ist idempotent, damit ein frischesdocker compose updenselben Zustand herstellt (Projektregel §5).2.
/enund/en/waren zwei URLs für dieselbe Seite/enlieferte 200 ohne Weiterleitung, das Canonical zeigte aber auf/en/. Der 301 sitzt jetzt gezielt in der nginx-Config für den EN-Site-Root. Bewusst nicht über CraftsaddTrailingSlashesToUrlsgelöst — das hätte auch/impressumzu/impressum/gemacht und bestehende URLs gebrochen.3. Kategorie-Seiten trugen den Titel der Fehlerseite
seo.twiggab jeder Seite ohneentryden 404-Titel. Das Kategorie-Archiv liefert 200 und hieß trotzdem „Philflow | Seite nicht gefunden". Templates können jetzt einen eigenen Titel setzen, die echte 404-Seite bleibt unberührt.4. Leere Meta-Descriptions
Der Fallback zeigte auf ein Feld
paragraph, das im Projekt nicht existiert — er war damit immer leer, und das Tag wurde trotzdem ausgegeben. Ein leeres Description-Tag ist schlechter als gar keins. Jetzt zieht der Fallback den Artikeltext bzw. Seiteninhalt, HTML-frei und gekürzt; ist nichts da, entfällt das Tag.5. Die englische Startseite verlinkte auf die deutschen Rechtsseiten und zeigte eine andere Telefonnummer als die deutsche. Beides saß im Content, nicht im Template: ein Linkfeld war als fester URL-String statt als Element-Beziehung gepflegt, dazu ein Tippfehler im Telefon-Link. Korrigiert auf
/en/impressum,/en/datenschutzund+49 155 63696346.6.
llms-full.txtexistierte nur auf dem Server, nicht im Repo — Drift gegen Projektregel §5. Beide Dateien sind jetzt versioniert und enthalten alle 12 Blogartikel (6 je Sprache); jede darin genannte URL wurde auf 200 geprüft.Belege (lokal gemessen und selbst nachgeprüft)
Beim Deploy zu beachten
Drei Dinge greifen nicht allein durch den Code-Sync:
php craft migrate/upauf Production, sonst bleibt die Sitemap dort leer./en-Redirect liegt in der nginx-Config, der Container braucht einen Reload.docs/DEPLOYMENT.mdnicht über Project-Config-Sync übertragen — das muss separat nachgezogen werden.Danach die Sitemap in der Search Console neu einreichen.
Was offen bleibt
/impressumist jetzt die Adresse aus dem Fließtext — nicht falsch, aber redaktionell besser zu fassen.xhtml:link alternate, nicht als eigener<loc>. Google akzeptiert das; andere Suchmaschinen sind pingeliger. Bei Bedarf separat.Offen aus Schritt 1: die Ladezeit der Startseite (kein Seiten-Cache vorhanden). Schritt 3 ist #59.
🤖 Generated with Claude Code
https://claude.ai/code/session_017w4iMK5VNobPwXUWXmLKKh