diff --git a/packages/playground/html/__tests__/html.spec.ts b/packages/playground/html/__tests__/html.spec.ts
index 97f64fc010789b..ed1ae6e91ad71e 100644
--- a/packages/playground/html/__tests__/html.spec.ts
+++ b/packages/playground/html/__tests__/html.spec.ts
@@ -85,3 +85,12 @@ describe('nested', () => {
testPage(true)
})
+
+describe('nested w/ query', () => {
+ beforeAll(async () => {
+ // viteTestUrl is globally injected in scripts/jestPerTestSetup.ts
+ await page.goto(viteTestUrl + '/nested/index.html?v=1')
+ })
+
+ testPage(true)
+})
diff --git a/packages/vite/src/node/server/middlewares/indexHtml.ts b/packages/vite/src/node/server/middlewares/indexHtml.ts
index bec271450cf088..ff76d6bdf886ac 100644
--- a/packages/vite/src/node/server/middlewares/indexHtml.ts
+++ b/packages/vite/src/node/server/middlewares/indexHtml.ts
@@ -12,6 +12,7 @@ import {
import { ViteDevServer } from '../..'
import { send } from '../send'
import { CLIENT_PUBLIC_PATH, FS_PREFIX } from '../../constants'
+import { cleanUrl } from '../../utils'
const devHtmlHook: IndexHtmlTransformHook = (html, { path }) => {
let index = -1
@@ -51,16 +52,14 @@ export function indexHtmlMiddleware(
const [preHooks, postHooks] = resolveHtmlTransforms(plugins)
return async (req, res, next) => {
+ const url = req.url && cleanUrl(req.url)
// spa-fallback always redirects to /index.html
- if (
- req.url?.endsWith('.html') &&
- req.headers['sec-fetch-dest'] !== 'script'
- ) {
+ if (url?.endsWith('.html') && req.headers['sec-fetch-dest'] !== 'script') {
let filename
- if (req.url!.startsWith(FS_PREFIX)) {
- filename = req.url.slice(FS_PREFIX.length)
+ if (url.startsWith(FS_PREFIX)) {
+ filename = url.slice(FS_PREFIX.length)
} else {
- filename = path.join(server.config.root, req.url!.slice(1))
+ filename = path.join(server.config.root, url.slice(1))
}
if (fs.existsSync(filename)) {
try {
@@ -68,7 +67,7 @@ export function indexHtmlMiddleware(
// apply transforms
html = await applyHtmlTransforms(
html,
- req.url!,
+ url,
filename,
[...preHooks, devHtmlHook, ...postHooks],
server