Flask 3.1.0升级后SERVER_NAME引发子域名功能异常的技术问询
Flask 3.1.0 子域名功能恢复配置方案
Flask 3.1.0 对SERVER_NAME的子域名匹配逻辑做了调整,默认关闭了子域名识别能力,这是导致你升级后子域名路由返回404的核心原因。以下是具体修复步骤:
启用子域名匹配开关
Flask 3.1.0 默认将subdomain_matching设为False,必须显式开启才能让应用识别路由中的subdomain参数。在应用配置中添加:app.config['SUBDOMAIN_MATCHING'] = True保留原有核心配置
你之前的SERVER_NAME = "domain.com"和SESSION_COOKIE_DOMAIN = ".domain.com"配置可以继续使用,前者用于标识主域名,后者保证会话在所有子域名间共享,无需修改。验证路由定义正确性
确保子域名路由的参数定义符合预期,比如用户专属子域名路由:@app.route('/', subdomain='<username>') def user_dashboard(username): return f"用户 {username} 的专属页面"无域名限制的Blueprint不需要设置
subdomain参数,这样它会自动匹配所有域名(主域名+子域名):from flask import Blueprint public_bp = Blueprint('public', __name__) @public_bp.route('/help') def help_center(): return "所有域名均可访问的帮助页面"本地调试补充配置
如果在本地测试,需要修改系统hosts文件(Windows路径:C:\Windows\System32\drivers\etc\hosts;Linux/macOS路径:/etc/hosts),添加子域名映射:127.0.0.1 domain.com 127.0.0.1 test.domain.com确保本地能正确解析子域名请求。
内容的提问来源于stack exchange,提问作者Marco Evasi
相关产品推荐
相关产品推荐

