Vue.js url使用烧瓶后端进行路由

时间:2017-07-15 08:49:26

标签: flask routes vue.js

我的后端是 python + flask ,前端是vuejs。

我的路线:

在烧瓶中,我只有两条路线:

  • 404
  • /

但是在vuejs的路线上:

  • /
  • /搜索
  • /约
  • /接触

我遇到的问题是:

当我访问myname.com/search

访问本地开发

0.0.0.0:8001/search

很好

访问服务器:

myname.com/search

它给了我404,因为不是烧瓶中的路线

我想我知道为什么会这样,但我不知道如何解决它,等待一些帮助。

2 个答案:

答案 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

从vue-router文档链接的

This GitHub project可以很好地概述Flask服务器可能需要做些什么来处理正在使用" normal"网址:

  1. 拦截传入的请求。
  2. 检查网址以确保其不会请求静态文件。
  3. 重定向/重写请求的网址,以便将其路由到正确的端点。
  4. 相关问题:Vue Router return 404 when revisit to the url

答案 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')