February 10, 2026•2 min read••
Tags ▼
- seo
- canonical
- metadata
This is the source of truth for URL behavior on the blog.
When I add or change routes, I use this policy to avoid canonical drift.
Base domain is always:
https://blog.andreszenteno.com
Canonical must match the exact rendered route:
/articles/{slug}/notes/{slug}/docs/{slug}/fb-articles/tags/{tag}alternates.canonical must equal the live route.openGraph.url must equal canonical.Optional OG fallback:
NEXT_PUBLIC_DYNAMIC_OG_ENABLED=true/og?title=... when frontmatter image is missingapp/sitemap.ts defines crawlable routes.app/robots.ts publishes sitemap and host directives./rss.xml/atom.xml/feed.jsonWhen routes change, I update metadata and sitemap in the same PR.
Before merge, verify:
SEO issues here usually come from inconsistency, not missing tooling.
If route, canonical, and sitemap move together, indexing stays stable.
Follow on your preferred channel for new articles, notes, and experiments.