部署Flask应用程序后更改URL

时间:2013-12-12 15:25:19

标签: python flask url-routing

所以,我有一个烧瓶应用程序,当它没有部署时效果很好。想象一下,它有/index//home/以及/home/field/的网页。现在我已经使用Apache和mod_wsgi部署了应用程序,它需要为每个URL都有一个前缀。

现在,它应该看起来像/newapp/index//newapp/home/以及/newapp/home/field/

因此,我更改了所有网址以包含新的/newapp/前缀,但唯一适用于它的网址是原始的/index/网址。所有其他人都返回

Not Found The requested URL was not found on the server.

单击该URL时,在浏览器中

。我绝对会在main.py中处理这条路线,所以我不知道为什么会找不到它。

任何人都知道发生了什么事?


编辑:添加一些代码

基本上我在main.py中更改了我的所有代码:

原始

@app.route('/')
@app.route('/index/', methods=['GET', 'POST'])
def index():
    #Stuff    

@app.route('/home/')
def farms():
    #More stuff

@app.route('/home/<selector>')
def fields(selector):
    #Further stuff

要...

新代码

@app.route('/newapp/')
@app.route('/newapp/index/', methods=['GET', 'POST'])
def index():
    #Stuff    

@app.route('/newapp/home/')
def farms():
    #More stuff

@app.route('/newapp/home/<selector>')
def fields(selector):
    #Further stuff

我这样做是因为我使用的域名已经有另一个Flask应用程序,所以我不得不区分这两个。此外,我希望将来会有更多烧瓶应用程序,因此这个newapp最终将成为任何给定烧瓶应用程序的标识符。

我更改了main.py以及我的模板中的所有href。所以,href来自

href=/index/

href=/newapp/index/

而且,每当我尝试点击链接时,我都会收到上面发布的错误


更多信息

因此,检查apache错误会记录一个错误File does not exist: /var/www/flask_util.js,,因为在我的main.py中我调用了from flask_util_js import FlaskUtilJs。我不确定这是否与URL路由有关,但可能

1 个答案:

答案 0 :(得分:1)

您无需在代码中添加前缀。

假设你有像

这样的代码
@app.route('/hi', methods = ['GET','POST'])
def myIndex():
    return "Hello World!", 200

您可以将别名设置为将其部署到www.myserver.com/app/

WSGIScriptAlias /app /var/www/myDir/myApp/app.wsgi

服务器应自动将www.myserver.com/app/hi映射到您应用程序中的/ hi。

但是,如果将映射设置为

@app.route('/newapp/hi', methods = ['GET','POST'])
def myIndex():
    return "Hello World!", 200

您的WSGI应用程序只接收/ hi的调用(服务器剥离前缀),因此它找不到匹配的路径并且返回未找到。