我的 Web 应用程序为用户分配了一个子域,并且可以选择允许他们使用自定义域。除非用户访问其自定义域以获取不包含尾部斜杠的路由,否则此方法有效。
对此 url 的 GET 请求按预期工作: http://user.example.com:5000/book/12345/
对此 url 的 GET 请求按预期工作: http://custom.com:5000/book/12345/
对此 url 的 GET 请求尝试重定向,但失败: http://custom.com:5000/book/12345
Flask 最终将浏览器重定向到这个 url,当然,这不起作用: http://<invalid>.example.com:5000/book/12345/
我应该以不同的方式处理自定义域吗?这是一个完整的最小示例来重现这一点。我设置了custom.com,example.com。和 user.example.com 在我的开发环境中指向我的 /etc/hosts 文件中的 127.0.0.1 ,以便 Flask 接收请求。
from flask import Flask
app = Flask(__name__)
server = app.config['SERVER_NAME'] = 'example.com:5000'
@app.route('/', subdomain="<subdomain>")
@app.route('/')
def index(subdomain=None):
return ("index")
@app.route('/book/<book_id>/', subdomain="<subdomain>")
@app.route('/book/<book_id>/')
def posts(post_id, subdomain=None):
return (book_id)
if __name__ == '__main__':
app.run(host='example.com', debug=True)