How to deploy an Astro site to FTP and shared hosting
Astro's static build produces plain HTML, CSS, and JavaScript files. Those files deploy to any FTP host — no Node server, no database, no server configuration required.
Confirm static output in astro.config.mjs
Astro uses static output by default when no server adapter is installed.
Set output: 'static' explicitly to be safe.
Run astro build — the output lands in dist/.
Configure trailing slash behavior
Set trailingSlash: 'always' in astro.config.mjs
to ensure consistent URL behavior across your shared host.
Upload dist/ contents via FTP
Upload the contents of dist/ to public_html/ —
not the folder itself. After upload, public_html/index.html should exist.
Configure .htaccess for 404
Astro generates a 404.html at the root of dist/.
Add ErrorDocument 404 /404.html to your .htaccess.
How Production Starter handles this
Every Production Starter kit is configured for FTP deployment out of the box. The back office deploys alongside the front end — one build, one FTP upload, both sides live.
Full deployment overview