fix(seo): Seitenstruktur von jeder Seite aus erreichbar, keine Duplikate mehr #95
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/indexierbare-navigation"
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?
Closes #82
Worum es geht
Google kennt 4 von 22 Seiten und keinen einzigen Blogartikel. Drei Ursachen,
alle behoben.
1. Die Navigation war auf 20 von 22 Seiten tot
„Über mich", „Branchen" und „Angebot" wurden als
./#angebotausgeliefert. Auf/bloglöst das zu/blog#angebotauf, wo es kein solches Element gibt. Füreinen Crawler führte von jeder Unterseite kein Weg zurück in die Seitenstruktur.
Anker zeigen jetzt absolut auf die Startseite der jeweiligen Sprache. Nebenbei
warf der Sprung-Handler bei jedem Klick auf einen dieser Links einen Fehler, weil
er den href-String als CSS-Selektor benutzte. Auch das ist an der Wurzel behoben.
2. Die Paginierung war ein unendlicher Duplikat-Trichter
/blog/p2,/blog/p9und/blog?page=2lieferten alle 200 mit wortgleichemInhalt und einem Canonical auf sich selbst. Jetzt: 404 für Seitenzahlen, die es
nicht gibt, und ein Canonical, das aus der Site aufgelöst wird statt aus dem
Request.
Die Sperre steht vor dem Layout. Im Inhaltsblock hätte der Kopfbereich
bereits
Cache-Control: public, max-age=3600gesendet und der 404 wäre eineStunde lang öffentlich zwischengespeichert worden. Gemessen: jetzt
no-store.Zusätzlich hängt
ether/seounbedingt einen HTTP-KopfLink: rel="canonical"mit seinem eigenen, ungefilterten Wert an. Der widersprach dem HTML auf jeder
/pN-Adresse. Er wird jetzt überschrieben.3. Es gab praktisch keine interne Verlinkung
Vier der sechs Artikel hingen an keiner Kategorie. Deshalb listete das Archiv
2 von 6, und der bereits vorhandene „Verwandte Artikel"-Block blieb bei ihnen
leer: er sucht über die Kategorie.
Die Anti-Slop-Reihe verlinkt sich jetzt selbst, über einen gemeinsamen Tag im
vorhandenen Feld. Kein neues Feld, künftige Reihen funktionieren ohne
Schema-Änderung.
Ein Fund nebenbei, der nicht im Issue stand
Die englische Sitemap existiert unter
/en/sitemap.xmlund listet alle sechsenglischen Artikel. Die
robots.txtnannte nur die deutsche. Google erfuhr vonder englischen Seite also nie. Die Datei liegt jetzt im Repo statt in einem
Datenbankfeld.
Gemessen, nicht angenommen
Lokal gegen
http://localhost:8090, nachclear-caches/all:/blog/p2,/blog/p9,/blog/category/…/p2→ 404 mitCache-Control: no-store/blog?page=2→ 200, Canonical auf/blog, HTTP-Kopf identisch/,/blog,/en/,/en/blog, Artikel, Kategorie → weiterhin 200/blogbitidentisch mit denen auf/, keinedoppelten Schrägstriche
und verlinkt in der englischen Fassung die englischen Slugs; auf Artikeln ohne
Reihe erscheint gar nichts
ids()liefertint, strikter Vergleich trägtEin unabhängiger Prüfagent mit ausschließlich lesenden Werkzeugen hat den Stand
gegengelesen und zwei Befunde gemeldet, beide oben behoben und nachgemessen.
Nicht geprüft: ob produktiv wirklich
templates/404.twigerscheint statt derEntwickler-Fehlerseite — lokal ist der Entwicklermodus an. Wird nach dem Deploy
live gemessen. Ebenso ungeprüft: das Aussehen der Serien-Navigation im Browser,
nur HTML und CSS sind belegt.
🤖 Generated with Claude Code
https://claude.ai/code/session_01VyiQJ8BM3hcqH3E3sPvg1N