{
  "id": 12618014,
  "title": "Leaving Vercel with a static site: the redirects you lose without noticing",
  "url": "https://urgent.news/2026/10/07/leaving-vercel-with-a-static-site-the-redirects-you-lose-without",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-10-07T11:48:32.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/ricco020/leaving-vercel-with-a-static-site-the-redirects-you-lose-without-noticing-2i4j"
  },
  "original_language": "en",
  "account": "Moving four static Astro sites from Vercel to a plain container host proved more challenging than anticipated. While the build process was straightforward, the platform's automatic handling of redirects, headers, cleanUrls, trailingSlash, and language negotiation was not as simple to replicate. Vercel's infrastructure applied these settings at the edge, and copying the dist/ folder into a web server resulted in 404 errors for home pages, short links, and extensionless URLs. Only upon months later did these issues become apparent in Search Console. The transition was made using Caddy, and key settings such as redirect order, patterns, host conditions, headers, and language negotiation needed to be manually translated. A Python script was developed to convert Vercel's vercel.json rules into Caddyfile configurations, but it has limitations and only handles static output. For complex sites with server-side rendering or functions, this approach is not suitable.",
  "summary": "This week I moved four static Astro sites off Vercel and onto a plain container host. The builds were the easy part: npm run build , copy dist/ into a web server image, done. What almost went wrong is everything Vercel had been doing around the build without my thinking about it. The failure that does not show up A static site on Vercel is not only a folder of HTML. vercel.json holds redirects,…",
  "key_points": [],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}