fix(seo): hreflang-Selbstbezug, ein robots-Tag, EN-Bilder und Retina-srcset #62
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/seo-hreflang-robots-assets"
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 1 von 3 gegen den Seobility-Report vom 06.09.2026 (Technik & Meta bei 8 %, -11 Punkte). Behebt die Befunde, die Sichtbarkeit kosten.
Refs #57Was drin ist
1. hreflang zeigte auf Startseiten statt auf die Seite selbst (
templates/_system/seo.twig)entry.localizedliefert in Craft per Definition nur die anderen Sites, nie die eigene — der Selbstbezug fehlte deshalb systematisch, und der Fallback in der alten Zeile 72 schickte ihn aufsite.baseUrl. Auf entry-losen Seiten (Kategorie-Archiv, Paginierung) zeigten alle Verweise auf Startseiten.Jetzt: die aktuelle Site nennt sich immer selbst mit ihrer echten URL. Existiert keine Übersetzung, wird für diese Sprache kein Tag geschrieben statt auf die Startseite zu zeigen.
x-defaultzeigt auf die deutsche Fassung derselben Seite. Funktioniert auch für Kategorie-Seiten.2. Zwei gegenläufige robots-Tags auf den Rechtsseiten (
templates/_system/seo.twig)index, followwar hart verdrahtet und wurde zusätzlich zum Wert aus dem SEO-Feld ausgegeben —/impressumund/datenschutzlieferten beides gleichzeitig. Jetzt genau ein Tag; der SEO-Feld-Wert gewinnt,index, follownur als Fallback.unavailable_afterwandert als Direktive in denselben content-String, wo Google es erwartet.3. Vier Bilder lieferten 404 auf der englischen Startseite (
_blocks/pl_comparisonSection,pl_differencesSection,pl_imageAndTextSection,pl_quoteSection)Sechs Pfade waren relativ ohne führenden Schrägstrich eingebunden und lösten unter
/en/gegen/en/img/…auf. Jetzt durchgängig{{ alias('@web') }}/img/…— dasselbe Muster, dasbase.twigschon für CSS und JS verwendet.4. Retina-Bilder waren unscharf, Startseite machte 569 statt 78 Abfragen (
_components/core/image.twig,config/general.php)Das
srcsetforderte dieselbe Breite dreifach an, und der2x-Deskriptor versprach doppelte Pixeldichte, lieferte aber dasselbe Bild wie1x— auf Retina-Displays also ein zu kleines, unscharfes Bild. Jetzt wird jede Größe einmal berechnet und2xstimmt. Fehlende Bildgrößen erzeugt Craft wieder im Hintergrund statt im laufenden Request (Craft-Standard).5. Kleinkram:
<html lang>hatte ein doppeltes Leerzeichen,og:localegab auf der EN-Siteenstatten_USaus.Belege (lokal gemessen, nicht behauptet)
hreflang und robots, gegen zehn Seiten (DE+EN von Startseite, Blog, Artikel, Kategorie
compound-engineering, Impressum) — selbst nachgeprüft, nicht vom Agent übernommen:Assets: 97 Bild-URLs auf DE- und EN-Startseite, alle 200, kein Bild kaputtgegangen.
Bildbezogene Datenbankabfragen: 191 → 145 (-24 %).
Was NICHT erledigt ist
Die Ladezeit ist damit nicht gelöst. Die Startseite liegt lokal weiterhin bei 0,69-0,79 s gegen 0,16 s auf
/impressum— Faktor 5. Der Bild-Fix war eine von drei belegten Ursachen; die größte ist, dass es überhaupt keinen Seiten-Cache gibt (Blitz nie installiert, Crafts eingebautes Caching bewusst abgeschaltet). Jeder Aufruf macht die volle Arbeit neu, deshalb steigt die Seite unter Last auf 3-6 s. Das ist eine eigene Entscheidung und kommt nicht in diesen PR.Die lokale TTFB-Zahl ist außerdem durch eine Dateirechte-Störung im lokalen Bild-Cache verfälscht — die echte Wirkung zeigt sich erst nach dem Deploy auf Production.
Nicht in diesem PR und separat erfasst: Sitemap mit nur 1 URL (#58), Alt-Texte, Schema.org und Fett-Tags (#59).
Nach dem Deploy zu prüfen
Die robots-Prüfung ist lokal nur eingeschränkt aussagekräftig, weil die Dev-Umgebung
none, noimageindexerzwingt. Auf Production muss gelten:/impressumgenau ein Tag mitnoindex, Startseite genau ein Tag mitindex, follow.🤖 Generated with Claude Code
https://claude.ai/code/session_017w4iMK5VNobPwXUWXmLKKh
Sechs img-Referenzen in vier Block-Komponenten (schema-bg-2/3/4.png, pattern-1 in Varianten) waren relativ ("img/…") verlinkt. Unter der englischen Startseite /en/ loest der Browser das gegen /en/img/… auf und liefert 404 — unter / (DE) traf es zufaellig den echten Pfad. Fix folgt dem im Projekt etablierten Muster aus base.twig: {{ alias('@web') }}/img/…. Zusaetzlich role="presentation" auf dem dekorativen pattern-1-Bild ergaenzt, alt="" bleibt korrekt bestehen. Refs #57 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017w4iMK5VNobPwXUWXmLKKh