我的后端是 python + flask ,前端是vuejs。
但是在vuejs的路线上:
当我访问myname.com/search
0.0.0.0:8001/search
很好
myname.com/search
它给了我404
,因为不是烧瓶中的路线
我想我知道为什么会这样,但我不知道如何解决它,等待一些帮助。
答案 0 :(得分:2)
如the documentation for vue-router中所述:
使用历史记录模式时,网址会看起来正常,"例如
http://oursite.com/user/id
。美丽!但是出现了一个问题:由于我们的应用是单页客户端应用,如果没有正确的服务器配置,如果用户直接在浏览器中访问
http://oursite.com/user/id
,则会收到404错误。现在那很难看。不用担心:要解决此问题,您需要做的就是向服务器添加一个简单的全部回退路由。如果网址与任何静态资源不匹配,则该网址应与您的应用所在的
index.html
页面相同。再次美丽!
因此,您似乎需要将服务器配置为正确处理此类请求,否则您的网址无法正常显示"正常" (没有哈希)并且仍然能够直接链接到该页面。
在一个与此相关的示例中,您会注意到,如果您使用Gmail(单页应用程序,就像您正在构建的那样),则指向设置页面的链接不是&# 34;正常"链接,而是列出哈希(#
)之后访问的特定页面:https://mail.google.com/mail/u/0/#settings/general
。
This GitHub project可以很好地概述Flask服务器可能需要做些什么来处理正在使用" normal"网址:
答案 1 :(得分:2)
我遇到了同样的问题,并用Flask catch-all rules解决了。 Flask将捕获URL /books
,然后将其传递给Vue应用程序。
@app.route('/', defaults={'path': ''})
@app.route('/<path:path>') # url /books will fail into here
def index(page):
return app.send_static_file('index.html')