diff --git a/vite.config.ts b/vite.config.ts index 1ff3721..2703e20 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -86,6 +86,8 @@ function rewriteHtmlPathsPlugin(): Plugin { const baseUrl = process.env.BASE_URL || '/'; const normalizedBase = baseUrl.replace(/\/?$/, '/'); + const escapedBase = normalizedBase.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); + return { name: 'rewrite-html-paths', enforce: 'post', @@ -96,10 +98,14 @@ function rewriteHtmlPathsPlugin(): Plugin { if (fileName.endsWith('.html')) { const asset = bundle[fileName]; if (asset.type === 'asset' && typeof asset.source === 'string') { + const hrefRegex = new RegExp(`href="\\/(?!${escapedBase.slice(1)}|test\\/|http|\\/\\/)`, 'g'); + const srcRegex = new RegExp(`src="\\/(?!${escapedBase.slice(1)}|test\\/|http|\\/\\/)`, 'g'); + const contentRegex = new RegExp(`content="\\/(?!${escapedBase.slice(1)}|test\\/|http|\\/\\/)`, 'g'); + asset.source = asset.source - .replace(/href="\/(?!test\/|http|\/\/)/g, `href="${normalizedBase}`) - .replace(/src="\/(?!test\/|http|\/\/)/g, `src="${normalizedBase}`) - .replace(/content="\/(?!test\/|http|\/\/)/g, `content="${normalizedBase}`); + .replace(hrefRegex, `href="${normalizedBase}`) + .replace(srcRegex, `src="${normalizedBase}`) + .replace(contentRegex, `content="${normalizedBase}`); } } }