Output Structure
Every build produces a plain directory tree of files. This page maps out what lives where, so you know exactly what goes live.
Per-language roots
In the default path URL mode, each Active Language gets its own subtree:
output/
en/
es/
pt/ With no language segments (single-language mode), the content sits directly in output/. With subdomain mode the same per-language directories carry the content, and your web server routes each language subdomain to its directory.
Promotion replaces the live tree via a symlink or directory rename; visitors only ever see a fully-built tree.
Page and post files
- Pages live at their own nested path:
output/en/about/philosophy/index.htmlfor a child page under its parent. - Posts live under the blog prefix inside the language tree:
output/en/blog/my-post/index.html(the prefix defaults toblogand can be overridden per language). - Category archives sit within the blog prefix too:
/blog/category/<slug>/.
Categories and pages nest from the admin content structure; the URL ground rules come from each language’s URL settings.
Shared files per language
Each language directory also carries its generated detection and index files:
sitemap.xmlrobots.txtfeed.xml: only when that language has at least one published postsearch-index.json: the index powering site search404.html: the built not-found page.well-known/security.txt: when a security contact is configured- PWA extras when enabled:
manifest.json,sw.js,offline.html
Root-level: a redirect page (or real page) occupies output/{lang}/index.html depending on where the domain root should point.
Assets are synced per language
Large shared directories get copied in per language at each build:
media/: the uploads from the admin’s media screen, mirrored into every language tree; only changed files are rewritten, so synced assets ride through unchanged builds.fonts/: the site’s typeface files.- Favicon files at the language’s root (favicon.ico, favicon-96x96.png, apple-touch-icon.png) when one is configured.
A logo file must be present under the site’s assets folder; builds warn “not found in assets/, skipping” if the setting names one that isn’t there. The build log marks each sync with a “media synced” line per language directory.
Redirects
Redirects are rendered two ways in the tree:
- HTML redirect pages at the old paths (with canonical links), per language;
- generated server config snippets at the output root (
_redirects.caddy), for netlify-style setups a_redirectsfile as well; pattern redirects exist only as HTML pages.
Outside the output tree
The build also writes a signed manifest outside the output: a private/ directory beside it holds build-manifest.json and its signature. This is the integrity claim of what went live, and on a botched promotion the previous manifest is restored, not overwritten.