Yuxin Li
02/18/2026, 4:32 PMZain Ul Abideen
02/18/2026, 6:41 PMZain Ul Abideen
02/18/2026, 9:34 PMpublic/ web root per app
• Framework core living in /vendor/wheels
• CLI-driven project scaffolding
• Clear separation between server-level and app-level concerns
What This Means Practically
You can still run multiple Wheels 3 applications on a single Lucee server, provided that:
Each application has its own web context (separate web root).
1. Each app maintains its own public/ directory as the web-accessible root.
2. URL rewriting is configured per site (via web server or Lucee mapping).
This is effectively the same pattern used by modern frameworks like Laravel, Rails, etc., where multiple apps share a runtime but not a single web root.
What Is No Longer Recommended and What is discouraged (and may cause issues) is:
• Running multiple apps inside the same physical web root
• Sharing framework core files across apps manually
• Relying on legacy 2.x routing assumptions (root.cfm, etc.)
Wheels 3 assumes one application per project directory with clean boundaries.
If your goal is operational efficiency (one server, multiple apps), you can do like Single Lucee Server, Multiple Sites (Supported)
Configure each Wheels 3 app as its own site/context in Lucee.
• Point each site to that app’s /public directory.
• This is fully aligned with the 3.0 architecture.
Is It “One Server Per App”?
Not strictly.
It is “one application per project structure,” but multiple applications can absolutely share a Lucee server instance as long as they are isolated at the web context level.Zain Ul Abideen
02/18/2026, 9:35 PMYuxin
02/19/2026, 3:54 AMserver.json, and each app in its own subfolder. Within each app, we have the standard Wheels 3.0 structure — wheels, wirebox, and testbox installed under vendor/ via box install. We’ve copied over our existing controllers, models, views, etc. into the app/ folder and our configuration into the config/ folder.
Three issues we’re hitting:
1. Clean template works fine
With a fresh scaffold (before copying over any existing code), we can visit the congratulations page and perform a reload — no issues.
2. Reload doesn’t pick up config changes
After copying our settings.cfm into config/, changes don’t take effect on reload. For example, we set a variable in settings.cfm, did a writeDump in a request to verify it, and it didn’t show up until we did a full server restart. It seems like the Wheels reload (?reload=true) isn’t actually re-including the config files.
3. After server restart, reload is broken
Once we restart the server (so the config changes take effect), subsequent reloads fail with this error. Here is the reload url we were using: <http://localhost:3000/[PROJECT_FOLDER_NAME]/public/index.cfm>
I turned off url rewrite in settings.cfmYuxin
02/19/2026, 3:55 AMlucee7/
├── server.json
├── app1/
│ ├── public/
│ ├── app/
│ ├── config/
│ ├── vendor/
│ ├── plugins/
│ ├── tests/
│ └── box.json
├── app2/
│ ├── public/
│ ├── app/
│ ├── ...
├── ... (all other apps)Zain Ul Abideen
02/19/2026, 10:13 AMserver.json, along with where your Application.cfc and index.cfm are located in your folder structure.
Those are the key files involved in how Lucee resolves the application and web root. They should help clarify what’s causing the error. If they don’t tell the full story, I may need a bit more detail, but that would be the best place to start.Zain Ul Abideen
02/19/2026, 10:16 AM