如何让Flask忽略端点URL中的末尾斜杠?
解决Flask路由末尾斜杠兼容问题
方法一:Flask全局配置
Flask自带全局关闭严格斜杠检查的功能,只需在初始化应用时添加一行配置,就能让所有路由自动兼容带斜杠和不带斜杠的URL,无需为每个路由重复写装饰器:
from flask import Flask app = Flask(__name__) # 全局关闭严格斜杠检查 app.url_map.strict_slashes = False @app.route("/things") def things(): main = env.get_template('things.html') context = data.things() return main.render(**context)
设置后,访问/things和/things/都会匹配到同一个视图函数。
方法二:Apache-WSGI部署时配置URL重写
如果用Apache+WSGI部署,可以借助mod_rewrite模块统一处理末尾斜杠,把带斜杠的请求重定向到不带斜杠的版本,Flask只需维护一套路由规则即可:
在Apache虚拟主机配置文件或.htaccess中添加以下规则:
RewriteEngine On # 将末尾带/的URL永久重定向到不带/的版本 RewriteRule ^(.*)/$ $1 [L,R=301]
配置生效后,用户访问/things/会被自动跳转至/things,既实现兼容,又保证了URL的一致性。
内容的提问来源于stack exchange,提问作者Ray Kiddy
相关产品推荐
相关产品推荐

