所以,我有一个烧瓶应用程序,当它没有部署时效果很好。想象一下,它有/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.
。我绝对会在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路由有关,但可能
答案 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的调用(服务器剥离前缀),因此它找不到匹配的路径并且返回未找到。