@@ -12,6 +12,7 @@ import {
12
12
import { ViteDevServer } from '../..'
13
13
import { send } from '../send'
14
14
import { CLIENT_PUBLIC_PATH , FS_PREFIX } from '../../constants'
15
+ import { cleanUrl } from '../../utils'
15
16
16
17
const devHtmlHook : IndexHtmlTransformHook = ( html , { path } ) => {
17
18
let index = - 1
@@ -51,24 +52,22 @@ export function indexHtmlMiddleware(
51
52
const [ preHooks , postHooks ] = resolveHtmlTransforms ( plugins )
52
53
53
54
return async ( req , res , next ) => {
55
+ const url = req . url && cleanUrl ( req . url )
54
56
// spa-fallback always redirects to /index.html
55
- if (
56
- req . url ?. endsWith ( '.html' ) &&
57
- req . headers [ 'sec-fetch-dest' ] !== 'script'
58
- ) {
57
+ if ( url ?. endsWith ( '.html' ) && req . headers [ 'sec-fetch-dest' ] !== 'script' ) {
59
58
let filename
60
- if ( req . url ! . startsWith ( FS_PREFIX ) ) {
61
- filename = req . url . slice ( FS_PREFIX . length )
59
+ if ( url . startsWith ( FS_PREFIX ) ) {
60
+ filename = url . slice ( FS_PREFIX . length )
62
61
} else {
63
- filename = path . join ( server . config . root , req . url ! . slice ( 1 ) )
62
+ filename = path . join ( server . config . root , url . slice ( 1 ) )
64
63
}
65
64
if ( fs . existsSync ( filename ) ) {
66
65
try {
67
66
let html = fs . readFileSync ( filename , 'utf-8' )
68
67
// apply transforms
69
68
html = await applyHtmlTransforms (
70
69
html ,
71
- req . url ! ,
70
+ url ,
72
71
filename ,
73
72
[ ...preHooks , devHtmlHook , ...postHooks ] ,
74
73
server
0 commit comments