Flutter v3+GoRouter应用部署Netlify后直接访问/signIn报页面未找到
解决Flutter Web部署Netlify后直接访问子路由404问题
问题原因
Flutter Web属于单页应用(SPA),所有路由逻辑都由前端的GoRouter处理。但Netlify服务器收到直接访问/signIn这类子路径的请求时,会默认去服务器上查找对应路径的文件或文件夹,而Flutter打包后只有index.html一个入口文件,因此服务器返回"Page Not Found"。首页跳转正常是因为先加载了index.html,之后的路由跳转都是前端内部处理的。
解决方案
方法1:添加_redirects文件
- 在Flutter项目的
web目录下新建一个名为_redirects的文件(不要添加任何后缀) - 在文件中写入一行路由重定向规则:
/* /index.html 200
- 重新执行
flutter build web命令打包项目 - 将
build/web目录下的所有文件部署到Netlify
方法2:使用netlify.toml配置
- 在项目根目录创建
netlify.toml文件 - 写入以下配置内容:
[build] command = "flutter build web" publish = "build/web" [[redirects]] from = "/*" to = "/index.html" status = 200
- 直接部署项目到Netlify,平台会自动读取该配置并处理路由重定向
完成以上操作后,直接访问/signIn这类子路径时,Netlify会把请求重定向到index.html,由GoRouter负责解析并渲染对应的页面,就不会再出现404错误了。
内容的提问来源于stack exchange,提问作者Adit Luhadia
相关产品推荐
相关产品推荐

