HTML5技术

vue-router使用 history 模式刷新后404问题 - limmy_sz

字号+ 作者:H5之家 来源:H5之家 2017-07-19 15:01 我要评论( )

因为我们的应用是单页客户端应用,当使用 history 模式时,URL 就像正常的 url,可以直接访问,但是因为vue-router设置的路径不是真实存在的路径,所以刷新就会返回404错误。 想要history模式正常访问,还需要后台配置支持。要在服务端增加一个覆盖所有情况

因为我们的应用是单页客户端应用,当使用 history 模式时,URL 就像正常的 url,可以直接访问,但是因为vue-router设置的路径不是真实存在的路径,所以刷新就会返回404错误。

想要history模式正常访问,还需要后台配置支持。要在服务端增加一个覆盖所有情况的候选资源:如果 URL 匹配不到任何静态资源,则应该返回同一个 index.html 页面,这个页面就是你 app 依赖的页面。

也就是在服务端修改404错误页面的配置路径,让其指向到index.html。

 

警告:

因为这么做以后,你的服务器就不再返回 404 错误页面,因为对于所有路径都会返回 index.html 文件。为了避免这种情况,你应该在 Vue 应用里面覆盖所有的路由情况,然后在给出一个 404 页面。

const router = new VueRouter({ mode: 'history', routes: [ { path: '*', component: NotFoundComponent } ] })

 

如此便解决了页面刷新后404问题。

 

问题延伸:

但是后面又发现,在IE浏览器下刷新仍然还是404,在网上找了一下原因,是因为IE自作聪明,对错误页面的处理在ie来看页面大小<1024b 会被认为十分不友好,所以ie就将改页面给替换成自己的错误提示页面了,而我的index.html刚好只有一个DIV:

<!DOCTYPE html>
<html>

<head>
<meta charset="utf-8">
<title>vue-mdm</title>
</head>

<body>
  <div></div>
</div>
</body>

</html>

解决办法就是充实一下页面,让大小超过1024即可。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 关于meta标签中的http-equiv属性使用介绍 - 予沫笙

    关于meta标签中的http-equiv属性使用介绍 - 予沫笙

    2017-07-18 15:00

  • 使用C#创建SQLite控制台应用程序 - cnc

    使用C#创建SQLite控制台应用程序 - cnc

    2017-07-14 08:00

  • AngularJS“路由”的定义概念、使用详解——AngularJS学习资料教程 - 我叫小熊

    AngularJS“路由”的定义概念、使用详解——AngularJS学习资料教程 -

    2017-07-12 11:01

  • 使用JS开发桌面端应用程序NW.js-2-开发问题小记 - 小小沧海

    使用JS开发桌面端应用程序NW.js-2-开发问题小记 - 小小沧海

    2017-07-12 11:00

网友点评
/