解决vue router使用 history 模式刷新后404问题


Posted in Javascript onJuly 19, 2017

因为我们的应用是单页客户端应用,当使用 history 模式时,URL 就像正常的 url,可以直接访问http://www.xxx.com/user/id,但是因为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 id="app"></div>
</div>
</body>
</html>

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

总结

以上所述是小编给大家介绍的解决vue router使用 history 模式刷新后404问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JQuery,Extjs,YUI,Prototype,Dojo 等JS框架的区别和应用场景简述
Apr 15 Javascript
为JavaScript添加重载函数的辅助方法
Jul 04 Javascript
javascript中input中readonly和disabled区别介绍
Oct 23 Javascript
jQuery拖拽 &amp; 弹出层 介绍与示例
Dec 27 Javascript
js判断浏览器是否支持html5
Aug 17 Javascript
javascript实现确定和取消提示框效果
Jul 10 Javascript
详解基于Node.js的微信JS-SDK后端接口实现代码
Jul 15 Javascript
iview同时验证多个表单问题总结
Sep 29 Javascript
node实现分片下载的示例代码
Oct 17 Javascript
了解javascript中的Dom操作
May 27 Javascript
bootstrap-treeview实现多级树形菜单 后台JSON格式如何组织?
Jul 26 Javascript
JavaScript 中for/of,for/in 的详细介绍
Nov 17 Javascript
深入理解vue Render函数
Jul 19 #Javascript
Vue AST源码解析第一篇
Jul 19 #Javascript
Vue之Watcher源码解析(1)
Jul 19 #Javascript
angular.js + require.js构建模块化单页面应用的方法步骤
Jul 19 #Javascript
Vue学习笔记进阶篇之多元素及多组件过渡
Jul 19 #Javascript
vue中的非父子间的通讯问题简单的实例代码
Jul 19 #Javascript
Vue之Watcher源码解析(2)
Jul 19 #Javascript
You might like
ThinkPHP控制器间实现相互调用的方法
2014/10/31 PHP
PHP 5.6.11中CURL模块问题的解决方法
2016/08/08 PHP
Thinkphp集成抖音SDK的实现方法
2020/04/28 PHP
javascript options属性集合操作代码
2009/12/28 Javascript
关于JS控制代码暂停的实现方法分享
2012/10/11 Javascript
Js参数值中含有单引号或双引号问题的解决方法
2013/11/06 Javascript
document.forms[].submit()使用介绍
2014/02/19 Javascript
jquery实现先淡出再折叠收起的动画效果
2015/08/07 Javascript
JavaScript实现下拉菜单的显示和隐藏
2016/01/05 Javascript
js判断数组key是否存在(不用循环)的简单实例
2016/08/03 Javascript
Angular.js中$apply()和$digest()的深入理解
2016/10/13 Javascript
jQuery基于正则表达式的表单验证功能示例
2017/01/21 Javascript
AngularJS页面带参跳转及参数解析操作示例
2017/06/28 Javascript
Angular2里获取(input file)上传文件的内容的方法
2017/09/05 Javascript
js实现一个简单的MVVM框架示例
2018/01/15 Javascript
python检测远程服务器tcp端口的方法
2015/03/14 Python
介绍Python的@property装饰器的用法
2015/04/28 Python
Python中取整的几种方法小结
2017/01/06 Python
python3 对list中每个元素进行处理的方法
2018/06/29 Python
Python拼接字符串的7种方法总结
2018/11/01 Python
对python过滤器和lambda函数的用法详解
2019/01/21 Python
Python类如何定义私有变量
2020/02/03 Python
浅谈Html5页面打开app的一些思考
2020/03/30 HTML / CSS
法国女性内衣购物网站:Glamuse
2019/05/13 全球购物
MyHeritage美国:家族史研究和DNA测试的领先服务
2019/05/27 全球购物
LG西班牙网上商店:Tienda LG Online Es
2019/07/30 全球购物
俄罗斯第一家篮球店:StreetBall
2020/07/30 全球购物
如何为DataGridView添加一个定制的Column Type
2014/01/21 面试题
运动会开幕式邀请函
2014/02/03 职场文书
高中生职业规划范文
2014/03/09 职场文书
会计专业个人自我鉴定
2014/03/21 职场文书
委托书的写法
2014/09/16 职场文书
办理护照工作证明
2014/10/10 职场文书
工作失误检讨书(经典集锦版)
2014/10/17 职场文书
会计专业求职信范文
2015/03/19 职场文书
python中使用redis用法详解
2022/12/24 Redis