From 7a592eb31cefdb01d53dd4443ad1d0c8934d4bdb Mon Sep 17 00:00:00 2001 From: Romuald Brillout Date: Fri, 26 Aug 2022 14:24:44 +0200 Subject: [PATCH 1/4] fix: appType mpa --- packages/vite/src/node/server/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vite/src/node/server/index.ts b/packages/vite/src/node/server/index.ts index a105e15d574812..5e910fedb8646f 100644 --- a/packages/vite/src/node/server/index.ts +++ b/packages/vite/src/node/server/index.ts @@ -542,7 +542,7 @@ export async function createServer( middlewares.use(serveStaticMiddleware(root, server)) // spa fallback - if (config.appType === 'spa') { + if (config.appType === 'spa' || config.appType === 'mpa') { middlewares.use(spaFallbackMiddleware(root)) } From 0d8320d65ccceef4bf0a8f4c5379a31a23c0f4ef Mon Sep 17 00:00:00 2001 From: Romuald Brillout Date: Sat, 27 Aug 2022 11:10:17 +0200 Subject: [PATCH 2/4] fix: only apply SPA fallback for SPA apps --- packages/vite/src/node/server/index.ts | 2 +- packages/vite/src/node/server/middlewares/spaFallback.ts | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/vite/src/node/server/index.ts b/packages/vite/src/node/server/index.ts index 5e910fedb8646f..78a3d7c90d7750 100644 --- a/packages/vite/src/node/server/index.ts +++ b/packages/vite/src/node/server/index.ts @@ -543,7 +543,7 @@ export async function createServer( // spa fallback if (config.appType === 'spa' || config.appType === 'mpa') { - middlewares.use(spaFallbackMiddleware(root)) + middlewares.use(spaFallbackMiddleware(root, config.appType === 'spa')) } // run post config hooks diff --git a/packages/vite/src/node/server/middlewares/spaFallback.ts b/packages/vite/src/node/server/middlewares/spaFallback.ts index 6970eef9df5706..61fb6bf30f5d64 100644 --- a/packages/vite/src/node/server/middlewares/spaFallback.ts +++ b/packages/vite/src/node/server/middlewares/spaFallback.ts @@ -5,7 +5,8 @@ import type { Connect } from 'types/connect' import { createDebugger } from '../../utils' export function spaFallbackMiddleware( - root: string + root: string, + spaFallback: boolean ): Connect.NextHandleFunction { const historySpaFallbackMiddleware = history({ logger: createDebugger('vite:spa-fallback'), @@ -20,7 +21,9 @@ export function spaFallbackMiddleware( if (fs.existsSync(path.join(root, rewritten))) { return rewritten } else { - return `/index.html` + if (spaFallback) { + return `/index.html` + } } } } From dfc396ac809d2d2866b70a8dfe648462cd9dc58b Mon Sep 17 00:00:00 2001 From: Romuald Brillout Date: Sat, 27 Aug 2022 11:11:56 +0200 Subject: [PATCH 3/4] chore: improve naming --- packages/vite/src/node/server/index.ts | 4 ++-- .../node/server/middlewares/{spaFallback.ts => rewriteUrl.ts} | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) rename packages/vite/src/node/server/middlewares/{spaFallback.ts => rewriteUrl.ts} (96%) diff --git a/packages/vite/src/node/server/index.ts b/packages/vite/src/node/server/index.ts index 78a3d7c90d7750..c98bcd9840dc28 100644 --- a/packages/vite/src/node/server/index.ts +++ b/packages/vite/src/node/server/index.ts @@ -50,7 +50,7 @@ import type { WebSocketServer } from './ws' import { createWebSocketServer } from './ws' import { baseMiddleware } from './middlewares/base' import { proxyMiddleware } from './middlewares/proxy' -import { spaFallbackMiddleware } from './middlewares/spaFallback' +import { rewriteUrlMiddleware } from './middlewares/rewriteUrl' import { transformMiddleware } from './middlewares/transform' import { createDevHtmlTransformFn, @@ -543,7 +543,7 @@ export async function createServer( // spa fallback if (config.appType === 'spa' || config.appType === 'mpa') { - middlewares.use(spaFallbackMiddleware(root, config.appType === 'spa')) + middlewares.use(rewriteUrlMiddleware(root, config.appType === 'spa')) } // run post config hooks diff --git a/packages/vite/src/node/server/middlewares/spaFallback.ts b/packages/vite/src/node/server/middlewares/rewriteUrl.ts similarity index 96% rename from packages/vite/src/node/server/middlewares/spaFallback.ts rename to packages/vite/src/node/server/middlewares/rewriteUrl.ts index 61fb6bf30f5d64..c15425b62acee4 100644 --- a/packages/vite/src/node/server/middlewares/spaFallback.ts +++ b/packages/vite/src/node/server/middlewares/rewriteUrl.ts @@ -4,7 +4,7 @@ import history from 'connect-history-api-fallback' import type { Connect } from 'types/connect' import { createDebugger } from '../../utils' -export function spaFallbackMiddleware( +export function rewriteUrlMiddleware( root: string, spaFallback: boolean ): Connect.NextHandleFunction { From 85f8717a6ef6908409e4dafe5723413abf630098 Mon Sep 17 00:00:00 2001 From: Romuald Brillout Date: Sat, 27 Aug 2022 12:51:45 +0200 Subject: [PATCH 4/4] chore: improve comment --- packages/vite/src/node/server/middlewares/indexHtml.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vite/src/node/server/middlewares/indexHtml.ts b/packages/vite/src/node/server/middlewares/indexHtml.ts index 3206734862baf0..3cf9a4dd2337ea 100644 --- a/packages/vite/src/node/server/middlewares/indexHtml.ts +++ b/packages/vite/src/node/server/middlewares/indexHtml.ts @@ -287,7 +287,7 @@ export function indexHtmlMiddleware( } const url = req.url && cleanUrl(req.url) - // spa-fallback always redirects to /index.html + // rewriteUrlMiddleware() appends '.html' to URLs if (url?.endsWith('.html') && req.headers['sec-fetch-dest'] !== 'script') { const filename = getHtmlFilename(url, server) if (fs.existsSync(filename)) {