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

SvelteKit动态路由([...slug])部署Firebase后返回404错误

解决Svelte应用部署Firebase后动态路由404问题

问题原因

你使用@sveltejs/adapter-static适配器时,当前配置将fallback设为null且开启默认预渲染。动态路由无法被预渲染为静态文件,直接访问或刷新动态路由时,Firebase Hosting找不到对应静态资源会返回404;而从首页点击跳转是客户端路由在处理,因此能正常访问。

修复步骤

1. 修改Svelte配置文件

更新svelte.config.js中的适配器配置,将fallback设置为index.html,让静态适配器生成 fallback 文件,用于客户端路由接管动态路径请求:

import adapter from '@sveltejs/adapter-static';
import preprocess from 'svelte-preprocess';

/** @type {import('@sveltejs/kit').Config} */
const config = {
    preprocess: [
        preprocess({
          postcss: true,
          preserve: ['ld+json'],
        }),
      ],

    kit: {
        adapter: adapter({
            pages: 'public',
            assets: 'public',
            fallback: 'index.html', // 修改此处
            precompress: false
            }),
            prerender: {
            default: true
            }
    }
};

export default config;

2. 配置Firebase Hosting重写规则

在项目根目录的firebase.json中添加重写规则,将所有请求指向index.html,确保Firebase Hosting把所有路由请求交给Svelte客户端路由处理:

{
  "hosting": {
    "public": "public",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "rewrites": [
      {
        "source": "**",
        "destination": "/index.html"
      }
    ]
  }
}

3. 重新构建并部署

执行构建命令生成新的静态文件,再部署到Firebase:

npm run build
firebase deploy --only hosting

完成以上操作后,刷新动态路由或直接访问对应URL时,Firebase会将请求转发到index.html,由Svelte客户端路由处理路径,即可解决404问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 13:33:33