You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Svelte访问无尾斜杠/static路径403无法触发自定义错误页问题

根因

本地开发时,不带尾斜杠的/static请求会被Vite静态资源中间件优先拦截,直接映射为项目根目录下的static文件夹路径,触发Vite的文件系统访问白名单校验,直接返回403。请求根本没到SvelteKit路由层,自然触发不了自定义错误页。
带尾斜杠的/static/不会触发这个目录映射逻辑,会正常交给SvelteKit路由处理,匹配不到路由就走自定义错误页。
该问题仅在本地开发环境出现,生产环境运行构建产物,没有Vite的fs校验逻辑,不会有这个异常。

解决方法

两种方案按需选择:

  • 方案1:全局尾斜杠重定向
    如果项目可以统一使用带尾斜杠的路由规范,直接在svelte.config.js中添加配置,让所有不带尾斜杠的路径自动跳转到带尾斜杠版本:

    /** @type {import('@sveltejs/kit').Config} */
    const config = {
      kit: {
        trailingSlash: 'always'
      }
    };
    export default config;
    

    配置后访问/static会自动重定向到/static/,正常触发自定义错误页。

  • 方案2:调整Vite fs权限配置
    如果项目需要保留无尾斜杠的路由规范,就修改Vite配置,把项目根目录加入文件系统访问白名单,Vite找不到对应静态资源时会自动把请求转交给SvelteKit路由处理。
    项目根目录下新建/修改vite.config.js:

    import { sveltekit } from '@sveltejs/kit/vite';
    import { defineConfig } from 'vite';
    
    export default defineConfig({
      plugins: [sveltekit()],
      server: {
        fs: {
          allow: ['.']
        }
      }
    });
    

    配置完成后重启开发服务器即可生效,访问/static时Vite找不到对应静态文件,会流转到SvelteKit路由层,正常返回自定义错误页。


内容的提问来源于stack exchange,提问作者FabienC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 04:18:13