Website hosting
How Dplooy serves your files, how to prepare a folder or ZIP so every page and image works, and how React, Vite and other framework apps are hosted.
Single-page or multi-file
| Kind | What it is | Upload it as |
|---|---|---|
| Single-page site | One HTML file, with its CSS and JavaScript inside it or loaded from a CDN | The .html file |
| Multi-file site | Pages, stylesheets, scripts, images and fonts in folders | A folder or a ZIP |
A site keeps its kind. When you update it with Replace files, a single-page site takes one HTML file and a multi-file site takes a folder or ZIP. To switch kinds, publish a new site.
Prepare a folder or ZIP
my-site/ index.html ← the homepage, at the top about.html robots.txt ← optional, at the top css/ style.css js/ main.js images/ logo.png
- The homepage must be named exactly
index.html(orindex.htm), in lower case, at the top — or inside one folder at the top, which Dplooy looks into. - Link pages and files with relative paths such as
about.htmlorimages/logo.png. Paths likeC:\Users\…orfile:///…only work on your own computer. - File names are case-sensitive online:
Logo.pngandlogo.pngare two different files. - Put
robots.txtandsitemap.xmlat the top, besideindex.html— they only work there. - Every file in a folder or ZIP can be up to your plan's file size — 5 MB on Free, 50 MB on Plus, 100 MB on Pro — and the whole upload up to 50 MB on Free and 500 MB on Plus and Pro. See Limits.
Step by step with pictures: Turn a ZIP file into a website.
How addresses map to files
Every file keeps its folder and name, so images/logo.png in your upload is your-site.dplooy.com/images/logo.png online. Pages also answer without their extension:
| Address | Serves |
|---|---|
/ | index.html |
/about | about.html, or about/index.html if there is no about.html |
/blog/ | blog/index.html |
/css/style.css | css/style.css, exactly |
Addresses are case-sensitive, like file names. Hidden files such as .env are never served.
Which files are kept
- Folders keep web files: HTML, CSS, JavaScript, JSON, XML, CSV, text and Markdown; images (PNG, JPG, GIF, SVG, WebP, AVIF, ICO, BMP, TIFF); fonts (WOFF, WOFF2, TTF, OTF, EOT); audio and video (MP3, OGG, WAV, MP4, WebM, OGV); PDFs, web manifests, source maps and Lottie files. Anything else is left out.
- ZIPs keep every file except program files such as
.exe,.bator.sh, which stop the upload. - Both leave out hidden files and clutter:
.git,.env,node_modules,.DS_Store,Thumbs.dband__MACOSX. - SVG images that carry scripts are refused.
React, Vite and other framework projects
A framework project isn't a website until it is built. Uploading the project folder gives a blank page, so Dplooy recognises the source code and refuses it with the commands to run. Build on your computer, then upload the folder the build creates:
| Framework | Run in the project folder | Then upload |
|---|---|---|
| Next.js | In next.config.js add: output: 'export', then npm install, then npm run build | out |
| Vite | npm install, then npm run build | dist |
| React | npm install, then npm run build | dist (Vite) or build (Create React App) |
| Vue | npm install, then npm run build | dist |
| Svelte | npm install, then npm run build | dist |
| Nuxt | npm install, then npm run generate | dist |
| SvelteKit | npm install -D @sveltejs/adapter-static, then In svelte.config.js use adapter-static, then npm run build | build |
| Astro | npm install, then npm run build | dist |
| Angular | npm install, then ng build | dist/<project>/browser |
| Remix | Remix needs a server to run and has no static export. It cannot be hosted as static files. | — |
- Next.js hosts as static files only: API routes, middleware and server-side data fetching don't run.
- Environment variables are read when you build, so set them before running the build.
- Rather not build by hand? Connect the repository with GitHub deploys and GitHub builds it on every push.
Step by step with pictures: Deploy a Vite or React app.
Apps and deep links
A site with one HTML file plus JavaScript — a built React, Vue or Svelte app — is treated as an app. Any address without a file behind it gets your index.html with a normal 200 status, so refreshing a page or sharing a deep link works with client-side routers such as React Router. A missing file such as an image still gets a real 404.
Missing pages
On a multi-file site that isn't an app, an address with no page behind it shows your homepage, sent with a 404 status. You can show one of your own pages instead — including your own 404.html, which isn't used until you choose it — or design an error page. See Page Not Found.
What runs and what doesn't
- Anything that runs in the visitor's browser works: HTML, CSS and JavaScript, with the images, fonts, audio, video and data files they load.
- Server-side code doesn't run: PHP, Python, Node.js servers and databases need a server. Use Forms, Bookings and Data for the jobs a static site usually needs a server for.
- Every address is served over https, with no traffic or bandwidth cap. Each site answers up to 300 requests a minute to keep bot floods out; normal sites never reach it.
- Browsers may keep a copy of a page for up to 5 minutes, images for 30 minutes and scripts and styles for an hour. After an update, hard-refresh to see it at once.