summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.changeset/large-waves-cheat.md5
-rw-r--r--packages/astro/src/vite-plugin-astro-server/trailing-slash.ts3
-rw-r--r--packages/astro/test/ssr-error-pages.test.js6
3 files changed, 14 insertions, 0 deletions
diff --git a/.changeset/large-waves-cheat.md b/.changeset/large-waves-cheat.md
new file mode 100644
index 000000000..bd61307b3
--- /dev/null
+++ b/.changeset/large-waves-cheat.md
@@ -0,0 +1,5 @@
+---
+'astro': patch
+---
+
+Fixes a bug that caused some dev server asset requests to return 404 when trailingSlash was set to "always"
diff --git a/packages/astro/src/vite-plugin-astro-server/trailing-slash.ts b/packages/astro/src/vite-plugin-astro-server/trailing-slash.ts
index fff8d3117..1872214cf 100644
--- a/packages/astro/src/vite-plugin-astro-server/trailing-slash.ts
+++ b/packages/astro/src/vite-plugin-astro-server/trailing-slash.ts
@@ -22,6 +22,9 @@ export function trailingSlashMiddleware(settings: AstroSettings): vite.Connect.N
/* malformed uri */
return next(e);
}
+ if(pathname.startsWith('/_') || pathname.startsWith('/@')) {
+ return next();
+ }
if (
(trailingSlash === 'never' && pathname.endsWith('/') && pathname !== '/') ||
(trailingSlash === 'always' && !pathname.endsWith('/') && !hasFileExtension(pathname))
diff --git a/packages/astro/test/ssr-error-pages.test.js b/packages/astro/test/ssr-error-pages.test.js
index 61335574d..0ffb7ddbd 100644
--- a/packages/astro/test/ssr-error-pages.test.js
+++ b/packages/astro/test/ssr-error-pages.test.js
@@ -169,6 +169,12 @@ describe('trailing slashes for error pages', () => {
const $ = cheerio.load(html);
assert.equal($('h1').text(), `Something went horribly wrong!`);
});
+
+ it('serves Vite assets correctly when trailingSlash is always', async () => {
+ const response = await fixture.fetch('/@vite/client');
+ assert.equal(response.status, 200);
+ });
+
});
describe('Production', () => {