Flask应用部署Netlify构建无报错 访问出现404 Page Not Found如何解决
问题排查步骤
- 首先确认Netlify的发布目录配置是否正确。进入Netlify控制台的站点设置,找到「构建与部署 > 持续部署 > 构建设置」,查看
Publish directory参数:你仓库内的index.html存放在templates目录下,Netlify默认只会读取发布目录根路径下的文件,如果你没有把发布目录配置为templates,也没有把index.html移到项目根目录,就会触发404。 - 其次确认部署逻辑是否正确:Netlify是静态站点托管平台,原生不支持运行Python后端服务。你的项目是Flask动态应用,所有依赖Python后端处理的路由逻辑,直接部署到Netlify都不会生效,就算能打开首页,后续的功能请求也会返回404。
- 最后检查是否配置了必要的重定向规则:如果你的站点是单页应用结构,需要在发布目录下新增
_redirects文件,写入/* /index.html 200规则,避免前端路由刷新时404。
解决方案
方案1:静态化部署(适合无动态交互的站点)
如果你的站点所有内容都是静态的,没有需要后端处理的接口请求,可以用Frozen-Flask把Flask项目编译为纯静态文件:
- 安装依赖:
pip install Frozen-Flask - 在Flask启动文件中添加冻结逻辑,运行后会生成
build目录,目录内就是全量静态资源 - 把Netlify的构建命令修改为安装依赖+执行冻结脚本,发布目录配置为
build即可
方案2:保留动态功能部署
如果需要保留Flask的后端逻辑,Netlify无法直接满足需求,可以二选一处理:
- 把Flask的路由逻辑迁移到Netlify Functions(Serverless函数)中实现,前端静态文件正常托管
- 更换支持Python后端运行的托管平台,直接部署完整Flask项目即可
内容的提问来源于stack exchange,提问作者Pranay Sadani
相关产品推荐
相关产品推荐

