Standarden svarede ALLE navigationer, den ikke havde precachet, med den
cachede forside. Derfor viste /tarballz/ (serveres af nginx uden for
Astro-bygget) og ukendte adresser forsiden i stedet for den rigtige side
eller 404. Alle Astro-sider er precachet i forvejen.
Claude-Session: https://claude.ai/code/session_012LCTmU2ewo8tnM1dByYAoG
- tag-siderne (/tags og /tags/*) får "noindex, follow" og udelades af
sitemap'et: 21 lister med 1-2 indlæg hver trak helhedsindtrykket ned
- /peppol er kun en omdirigering til /nemhandel: noindex og ud af sitemap'et
- /profiler og /ubl kunne kun nås via Cmd/Ctrl+K-paletten (JavaScript, som
Google ikke følger); nu kort på forsiden under "Mere end et CV"
Sitemap: 44 -> 22 URL'er, alle nås inden for 2 klik fra forsiden.
Claude-Session: https://claude.ai/code/session_012LCTmU2ewo8tnM1dByYAoG
Google kendte 41 af sitemapets 44 URL'er som "Webadressen er ikke kendt af
Google". Årsagen var at siden fandtes i to former: de interne links peger alle
på no-slash (/blog, /cv, /tags/proxmox), mens sitemap og <link rel="canonical">
brugte skråstreg-formen. Origin serverer begge med 200 uden redirect, så
Googles linkbaserede opdagelse ramte kun det ene sæt, og sitemapets sæt blev
aldrig opdaget.
Nu peger canonical, sitemap og RSS alle på no-slash-formen, som de interne
links i forvejen brugte. lastmod slås stadig op på Astros egne ruter (som har
skråstregen) FØR URL'en strippes, så sitemapets 44 lastmod-datoer er uændrede.
Claude-Session: https://claude.ai/code/session_0198n4owY35jQpwht1wCGzfh
Fire ugers adgangslog (81k requests) viser at ægte Googlebot kun hentede robots.txt,
favicon og et par billeder — plus én enkelt HTML-side i hele perioden. Intet af det her
løser dét (kun indgående links gør), men det fjerner de undskyldninger vi selv havde
lagt ud.
- Sitemappet havde ingen lastmod overhovedet. Nu udleder astro.config.mjs den pr. side:
statiske sider fra deres sidste commit, blogindlæg fra updated/date i frontmatter,
og oversigts-/tagsider fra det nyeste indlæg de viser. Kan en dato ikke fastslås
præcist, udelades lastmod helt — en forkert dato er værre end ingen, fordi Google
holder op med at stole på feltet.
- Det kræver rigtig git-historik, så checkout kører nu fetch-depth: 0 (default shallow
ville give alle filer samme dato).
- Nyt deploy-step pinger IndexNow med de sider dette push faktisk ændrede — udregnet af
scripts/indexnow.mjs ud fra diffen, ikke hele sitemappet, da gentagne fuld-lister er
støj. Nøglefilen lå allerede i public/, men blev aldrig brugt. Hjælper kun Bing/Yandex;
Google understøtter ikke IndexNow. continue-on-error, så det aldrig vælter et deploy.
- /favicon.ico gav 404. Tilføjet som rigtig 3-størrelses ICO (16/32/48) genereret fra
favicon.svg med samme baggrund som de øvrige ikoner.
Claude-Session: https://claude.ai/code/session_018oXJWTRxTYdcV9Kw6M7e5J
@vite-pwa/astro genererer en Workbox-SW der precacher alt (59 entries); autoUpdate + skipWaiting + cleanupOutdatedCaches saa redeploy aldrig strander en bruger paa gammel version. Registrering injiceret via /registerSW.js i Base.astro (manifest:false bruger den eksisterende site.webmanifest). Offline-brug + Add-to-Home-Screen.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Replaces the placeholder repo with the asger.weirsoe.dk site source.
Adds 6 blog posts (Proxmox, Authentik/OIDC, NPMplus migration, JS injection,
ah-fail) and .gitea/workflows/deploy.yml (bun build + rsync over SSH).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>