You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Every anchor detail URL (/anchor/<id>) returns HTTP 404. The page "works" only through the GitHub-Pages 404.html SPA fallback, which requires JavaScript and still carries the 404 status code.
This hurts SEO and AI discoverability threefold:
Search engines do not index 404s — the status code wins, regardless of what the fallback renders. None of the 161 anchors can rank individually.
sitemap.xml advertises all 161 URLs (priority 0.6) — crawlers are offered 161 dead links: wasted crawl budget, Search Console errors, a negative quality signal.
Shared deep links (social posts, the planned card QR codes) inherit the 404 as well.
Expected
Each anchor gets a real pre-rendered page at /anchor/<id>/index.html (HTTP 200) with its rendered content, own <title>, meta description, self-canonical URL — and a German variant under /de/anchor/<id> where a .de.adoc translation exists (155 of 161), with honest hreflang pairs.
With JavaScript, behavior is unchanged: the SPA hydrates and shows the anchor as a modal, exactly as today.
Why now
#596 built all the needed machinery (per-route applyHead, fragment rendering, hreflang/lang handling, the /de router rule — /de/anchor/<id> already resolves client-side). This is the follow-up flagged in that PR.
Problem
Every anchor detail URL (
/anchor/<id>) returns HTTP 404. The page "works" only through the GitHub-Pages404.htmlSPA fallback, which requires JavaScript and still carries the 404 status code.This hurts SEO and AI discoverability threefold:
sitemap.xmladvertises all 161 URLs (priority 0.6) — crawlers are offered 161 dead links: wasted crawl budget, Search Console errors, a negative quality signal."url": ".../anchor/<id>"on every term. The structured data we added for entity resolution references non-existent pages.Shared deep links (social posts, the planned card QR codes) inherit the 404 as well.
Expected
Each anchor gets a real pre-rendered page at
/anchor/<id>/index.html(HTTP 200) with its rendered content, own<title>, meta description, self-canonical URL — and a German variant under/de/anchor/<id>where a.de.adoctranslation exists (155 of 161), with honest hreflang pairs.With JavaScript, behavior is unchanged: the SPA hydrates and shows the anchor as a modal, exactly as today.
Why now
#596 built all the needed machinery (per-route
applyHead, fragment rendering, hreflang/lang handling, the/derouter rule —/de/anchor/<id>already resolves client-side). This is the follow-up flagged in that PR.