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

Flask如何匹配所有路由?解决static路径无法捕获问题

解决Flask中catch-all路由无法捕获static路径请求的问题

问题原因

Flask默认会自动注册静态文件的路由规则,且该规则优先级高于你自定义的<path:full_path>通配路由。即便修改static_url_path,内置的静态路由依然存在,会优先匹配以static开头的请求,导致catch_all函数无法触发。

修复方案

直接禁用Flask的静态文件功能,初始化应用时设置static_folder=None,这样Flask就不会注册任何静态文件路由,所有请求都会进入你的通配路由处理:

from flask import Flask
from flask import request

# 禁用静态文件夹,避免自动注册静态路由
app = Flask(__name__, static_folder=None)

@app.route('/<path:full_path>', methods=['GET', 'PUT', 'DELETE', 'POST'])
def catch_all(full_path):
    print(request.url)
    return request.url

if __name__ == "__main__":
    app.run(port=8080, host='0.0.0.0', ssl_context='adhoc', debug=True)

验证效果

启动应用后访问https://127.0.0.1:8080/static/index.html,请求会被catch_all函数捕获,控制台会打印对应URL,页面同时返回该URL。

补充说明

若后续需要重新启用静态文件功能,只需移除static_folder=None参数,Flask会恢复默认的静态文件路由处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 07:47:41