本文介绍在 flask 中避免静态资源(如 `/static/`)被通配路由捕获的正确方法,推荐使用 404 错误处理器替代 `@app.route(‘/’)`,确保 `/static` 等内置路径正常工作。
在 Flask 中,开发者常希望通过通配路由(如 @app.route(‘/’))实现前端单页应用(SPA)的客户端路由回退,或统一处理未定义页面。但直接使用该方式会覆盖 Flask 默认的静态文件服务机制——因为 /static/xxx.css 也会被 匹配,导致静态资源无法加载。
❌ 错误做法(破坏静态服务):
@app.route('/', defaults={'path': ''})
@app.route('/<path:path>')
def catch_all(path):
return f'You want path: {path}'
此代码会劫持所有请求(包括 /static/style.css),使 Flask 不再调用其内置的 send_static_file 处理器。