diff --git a/packages/vite/src/node/server/index.ts b/packages/vite/src/node/server/index.ts index a105e15d574812..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, @@ -542,8 +542,8 @@ export async function createServer( middlewares.use(serveStaticMiddleware(root, server)) // spa fallback - if (config.appType === 'spa') { - middlewares.use(spaFallbackMiddleware(root)) + if (config.appType === 'spa' || config.appType === 'mpa') { + middlewares.use(rewriteUrlMiddleware(root, config.appType === 'spa')) } // run post config hooks 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)) { diff --git a/packages/vite/src/node/server/middlewares/spaFallback.ts b/packages/vite/src/node/server/middlewares/rewriteUrl.ts similarity index 85% rename from packages/vite/src/node/server/middlewares/spaFallback.ts rename to packages/vite/src/node/server/middlewares/rewriteUrl.ts index 6970eef9df5706..c15425b62acee4 100644 --- a/packages/vite/src/node/server/middlewares/spaFallback.ts +++ b/packages/vite/src/node/server/middlewares/rewriteUrl.ts @@ -4,8 +4,9 @@ import history from 'connect-history-api-fallback' import type { Connect } from 'types/connect' import { createDebugger } from '../../utils' -export function spaFallbackMiddleware( - root: string +export function rewriteUrlMiddleware( + 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` + } } } }