Flask中的域路由

时间:2013-08-29 13:08:01

标签: python flask werkzeug

我想将用户从test1.domain.com重定向到test2.domain.com。我在url_map中尝试了'host_matching'和url_rule中的'host'。它似乎不起作用,显示404错误。例如,在访问'localhost.com:5000'时,它应该转到'test.localhost.com:5000'。

from flask import Flask, url_for, redirect
app = Flask(__name__)
app.url_map.host_matching = True

@app.route("/")
def hello1():
    #return "Hello @ example1!"
    return redirect(url_for('hello2'))

@app.route("/test/", host="test.localhost.com:5000")
def hello2():
    return "Hello @ test!"

if __name__ == "__main__":
    app.run()

有可能吗?有人试过吗? 提前谢谢..

1 个答案:

答案 0 :(得分:1)

您的代码中没有任何内容将请求从localhost.com重定向到test.localhost.com。如果您希望这种情况发生,您需要使用http重定向来响应localhost.com的请求。 You also need to specify the host for all routes when you set host_matching to true

from flask import Flask, redirect, url_for
app = Flask(__name__)
app.url_map.host_matching = True

@app.route("/", host="localhost.com:5000")
def hello1():
    return redirect(url_for("hello2")) # for permanent redirect you can do redirect(url_for("hello2"), 301)

@app.route("/", host="test.localhost.com:5000")
def hello2():
    return "Hello @ test!"

if __name__ == "__main__":
    app.run()

请记住,您还需要在主机文件中将localhost.comtest.localhost.com映射到127.0.0.1。