Vylepšení /sitemap.xml
Stav dokumentu: Nezapracováno — sitemap funguje a pokrývá hlavní veřejné routy, ale dá se zpřesnit z hlediska kanonických URL, signálů pro crawlery a sladění s plánovanou KV cache.
Cíl
Udržovat jednu spolehlivou mapu URL pro vyhledávače: bez zbytečných duplicit, s rozumnou invalidací po změnách obsahu a volitelně s bohatšími signály (lastmod), aniž by se předčasně komplikovalo dělením na sitemap index (dokud počet URL zůstane hluboko pod limitem ~50k URL na soubor).
Současný stav (implementace)
- Route:
app/routes/sitemap[.]xml.tsx. - Agreguje statické cesty (úvod, katalogy, roadmapa, dokumentace…) plus dynamické slugy z D1: byliny, způsoby zpracování, témata/symptomy, regiony, spirituální návody; měsíční stránky
/sezona/1–12. - XML obsahuje pouze
<url><loc>…</loc></url>— bez<lastmod>,<changefreq>,<priority>. - Odpověď:
Cache-Control: public, max-age=3600(1 hodina). Klíčsitemap:v1je v 21-tech-spec.md §10 popsán jako KV cache, ale v kódu zatím není.
Zjištěné problémy a rizika
- Duplicitní měsíční URL — V sitemapě jsou jak
/sezona/:month, tak/co-sbirat/:month. Alias/co-sbirat/:monthpřesměrovává na/sezona/:month(23-api-and-routes.md); kanonická URL je sezóna. Listing přesměrovávacích URL ve sitemapě neodpovídá obvyklé praxi „do sitemap jen finální 200 OK kanonické adresy“ a může zbytečně zatěžovat crawl budget. - Chybějící
<lastmod>— Vyhledávače s tím umí pracovat i bez něj, ale u často měněného obsahu (byliny, dokumentace) pomáhá efektivněji plánovat přecrawl; vyžaduje ale konzistentní zdroj pravdy (např.updated_atv D1 / datum commitu u docs — podle toho, co je levné a pravdivé). - Cache vs. invalidace — Hodina CDN/worker cache může být OK pro malý provoz; po zavedení
sitemap:v1(až bude KV) je potřeba invalidovat při publikaci / purge ve stejném duchu jako u ostatních veřejných stránek (32-admin.md). - Škálování — Při výrazném růstu počtu URL zvážit sitemap index (
sitemapindex) a více souborů; zatím spíš dokumentovat práh než implementovat.
Plán práce (checklist)
- Kanonické měsíční URL — Odstranit z generovaného seznamu
/co-sbirat/:monthnebo zdokumentovat explicitní produktové rozhodnutí, proč alias zůstává (a sjednotit s canonical/meta na stránkách). Po změně aktualizovat README.md (řádek o obsahu sitemap) a případně poznámku v sezonnost-a-kalendar.md. -
lastmod(volitelně po blocích) — Pro entity z DB použít jednotnýupdated_at(neboMAX(updated_at)v batch dotazech); pro statické routy buď konstanta build date, nebo vynechat; pro dokumentaci z registry — datum změny souboru nebo pole v registru, pokud existuje. - KV
sitemap:v1(volitelně) — Pokud se KV zavádí i jinde: uložit předgenerovaný XML nebo JSON blob + TTL / purge na publish; sladit s 21-tech-spec.md. Pokud zůstane jen dynamický loader, upřesnit tech spec (že klíč je rezerva / později). - Kontrola pokrytí — Při nových veřejných routách zkontrolovat sitemap (krátký checklist v tomto dokumentu nebo v 23-api-and-routes.md).
- Validace — Ručně nebo ve CI: well-formed XML, rozumný počet URL; případně odfiltrovat prázdné slugy (obrana do budoucna).
Akceptace
- Ve sitemapě nejsou URL, které končí jen HTTP přesměrováním na jinou adresu v téže sitemapě (nebo je zdůvodněný výjimkový přístup v dokumentaci).
- Po nasazení projde kontrola v Google Search Console / ruční stažení
sitemap.xmlbez chyb parseru. - Dokumentace tras (23-api-and-routes.md) a přehled v README.md odpovídají skutečnému obsahu sitemap.
Související
- Další SEO úkoly: seo-metadata-social-a-nadpisy.md, seo-strukturovana-data-json-ld.md.
- Tech spec KV klíčů: 21-tech-spec.md §10.
- Admin a invalidace cache: 32-admin.md.
- Alias sezóny: sezonnost-a-kalendar.md.