diff --git a/packages/start/src/config/index.ts b/packages/start/src/config/index.ts index b8cf5bf58..06d4fbacb 100644 --- a/packages/start/src/config/index.ts +++ b/packages/start/src/config/index.ts @@ -73,7 +73,7 @@ export function solidStart(options?: SolidStartOptions): Array { }, }; }, - async config(_, env) { + async config(config, env) { const clientInput = [handlers.client]; if (env.command === "build") { const clientRouter: BaseFileSystemRouter = (globalThis as any).ROUTERS.client; @@ -143,6 +143,9 @@ export function solidStart(options?: SolidStartOptions): Array { "import.meta.env.START_CLIENT_ENTRY": JSON.stringify(handlers.client), "import.meta.env.START_DEV_OVERLAY": JSON.stringify(start.devOverlay), "import.meta.env.SEROVAL_MODE": JSON.stringify(start.serialization?.mode || "json"), + "import.meta.env.SERVER_BASE_URL": JSON.stringify( + (config as { server?: { baseURL?: string } })?.server?.baseURL ?? "", + ), }, builder: { sharedPlugins: true, diff --git a/packages/start/src/env.d.ts b/packages/start/src/env.d.ts index fad2a39ab..329c0de8d 100644 --- a/packages/start/src/env.d.ts +++ b/packages/start/src/env.d.ts @@ -13,5 +13,5 @@ interface SolidStartMetaEnv { START_CLIENT_ENTRY: string; START_ISLANDS: boolean; // START_DEV_OVERLAY: boolean; - // SERVER_BASE_URL: string; + SERVER_BASE_URL: string; } diff --git a/packages/start/src/server/handler.ts b/packages/start/src/server/handler.ts index 206bc9e26..74424db28 100644 --- a/packages/start/src/server/handler.ts +++ b/packages/start/src/server/handler.ts @@ -254,6 +254,10 @@ function produceResponseWithEventHeaders(res: Response) { } function stripBaseUrl(path: string) { - if (import.meta.env.BASE_URL === "/" || import.meta.env.BASE_URL === "") return path; - return path.slice(import.meta.env.BASE_URL.length); + const base = + import.meta.env.SERVER_BASE_URL || import.meta.env.BASE_URL || "/"; + if (base === "/" || base === "") return path; + const normalizedBase = base.endsWith("/") ? base.slice(0, -1) : base; + if (normalizedBase === "") return path; + return path.startsWith(normalizedBase) ? path.slice(normalizedBase.length) || "/" : path; }