记一次vue去除#问题处理经过小结


Posted in Javascript onJanuary 24, 2019

1、vue项目,在浏览器中看到的路由都是带有#的,如果想去掉#,我们可以用路由的 history 模式,这种模式充分利用 history.pushState API 来完成 URL 跳转而无须重新加载页面。只需要在路由表中,加入一行代码即可:使用mode: 'history'属性,在路由代码中添加mode:'history'即可

2、build以后部署到服务器,会出现刷新页面报404错误,查看了一些资料和官方vue history模式的配置方法进行尝试,我原以为就这样配置一下就可以了,结果……

我的网站是阿里云虚拟机+nginx+tomcat进行建站,在nginx的配置文件中,起初为去掉#时配置如下(网站正常运行):

记一次vue去除#问题处理经过小结

初始配置1

这种情况下,我将vue的路由改为history模式,地址中的#去掉了,但是也会出现上面所说的,刷新页面时报404错误,前端路由交给了后端去处理造成mapping匹配不上导致。

记一次vue去除#问题处理经过小结

官方的nginx解决办法

上面是官方给出的nginx解决办法,于是我对nginx的域名配置文件进行修改,修改结果如下:

记一次vue去除#问题处理经过小结

更新配置文件1

重启nignx服务后进行测试,结果在我禁止从缓存中获取的情况下,首页可以访问到,但是所有的静态资源无法访问

记一次vue去除#问题处理经过小结

静态资源无法访问

try_files属性按顺序检查文件是否存在,返回第一个找到的文件。结尾的斜线表示为文件夹 -$uri/。如果所有的文件都找不到,会进行一个内部重定向到最后一个参数。

index.html应该是找到了,但是为什么静态文件找不到呢?后来我改变配置,将静态文件与index.html地址配置到域名的根目录(这种情况与配置地址跳转8082有什么区别?请大神解惑一下)

更换配置,去掉8082的proxy_pass,添加root与index属性,如下图:

记一次vue去除#问题处理经过小结

更新配置文件2

结果首页都放问不到了

记一次vue去除#问题处理经过小结

403禁止访问

一般来说nginx 的 403 Forbidden errors 表示你在请求一个资源文件但是nginx不允许你查看。

403 Forbidden 只是一个HTTP状态码,像404,200一样不是技术上的错误。

哪些场景需要返回403状态码的场景?

1.网站禁止特定的用户访问所有内容,例:网站屏蔽某个ip访问。

2.访问禁止目录浏览的目录,例:设置autoindex off后访问目录。

3.用户访问只能被内网访问的文件。

以上几种常见的需要返回 403 Forbidden 的场景。

我由此推断,应该是配置中的目录不允许访问导致的,更新nginx.conf 启动用户替换为root重启nginx尝试,首页与静态资源都访问成功(这样配置是否存在安全隐患?)但是后台api访问报错404,这样,我意识到,我已经在错误的路上越走越远了,我域名指向前端首页,但是我域名又需要我指向后端服务,但是我用代理将域名指向后端服务以后,那我之前做的尝试都将不起作用,

我使用了nginx代理就不应该再在nginx处进行配置,我需要在nginx的后面tomcat或者应用上进行修改。(可能我项目的设计比较奇葩,将vue打包目录与后台springboot后台打包目录放到一起了前后台的首页都是同一个html)

1、鉴于我项目的特殊性,在不改变项目结构的情况下,我在应用中我 进行404 status转发,

具体代码如下:

记一次vue去除#问题处理经过小结

index首页转发

经过测试,虽然刷新时访问的页面仍然报404,但是可以重新加载该“页面”,实现了“刷新页面”。

记一次vue去除#问题处理经过小结

页面加载成功,network报404

2、本着求知精神,我把项目前后端分离,重新部署,尝试使用try_files属性验证一下

结果与1、中前台现象一样,只是network状态变成了304

记一次vue去除#问题处理经过小结

页面加载成功,network显示304

禁用缓存后结果如图:

记一次vue去除#问题处理经过小结

禁用缓存后,状态码200

至此,我的问题已经得到完美解决!

本来这里就是一个小坑,由于自己的原因把这个小坑变成大坑了。虽然解决问题的过程看着有点傻, 但终于弄明白了自己的问题所在:前后端合并与分离两种方式的区别,不要混淆

VUE前后端分离开发,整合后上线部署,这种方式奇葩吗?如果我不该变项目结构是否会有完美的解决方法?知道的大神请留言解惑一下,感激不尽……

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
基于jquery自定义图片热区效果
Jul 21 Javascript
JS.getTextContent(element,preformatted)使用介绍
Sep 21 Javascript
js 左右悬浮对联广告特效代码
Dec 12 Javascript
JavaScript中的类数组对象介绍
Dec 30 Javascript
在Google 地图上实现做的标记相连接
Jan 05 Javascript
三分钟带你玩转jQuery.noConflict()
Feb 15 Javascript
vue之nextTick全面解析
May 17 Javascript
解决VUE中document.body.scrollTop为0的问题
Sep 15 Javascript
浅谈javascript错误处理
Aug 11 Javascript
浅析js实现网页截图的两种方式
Nov 01 Javascript
微信小程序以ssm做后台开发的实现示例
Apr 08 Javascript
JavaScript函数重载操作实例浅析
May 02 Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧滑动,右侧不动)
Jan 23 #Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧不动,右侧滑动)
Jan 23 #Javascript
vue车牌号校验和银行校验实战
Jan 23 #Javascript
微信小程序map组件结合高德地图API实现wx.chooseLocation功能示例
Jan 23 #Javascript
微信小程序使用map组件实现检索(定位位置)周边的POI功能示例
Jan 23 #Javascript
使用javascript做时间倒数读秒功能的实例
Jan 23 #Javascript
大转盘抽奖小程序版 转盘抽奖网页版
Apr 16 #Javascript
You might like
46 个非常有用的 PHP 代码片段
2016/02/16 PHP
关于PHP中Session文件过多的问题及session文件保存位置
2016/03/17 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
2017/07/19 PHP
php实现基于pdo的事务处理方法示例
2017/07/21 PHP
JavaScript打字小游戏代码
2011/12/26 Javascript
JavaScript中instanceof运算符的用法总结
2013/11/19 Javascript
jQuery实现返回顶部功能适合不支持js的浏览器
2014/08/19 Javascript
Js中使用hasOwnProperty方法检索ajax响应对象的例子
2014/12/08 Javascript
js实现Select下拉框具有输入功能的方法
2015/02/06 Javascript
js实现全国省份城市级联下拉菜单效果代码
2015/09/07 Javascript
jQuery使用$获取对象后检查该对象是否存在的实现方法
2016/09/04 Javascript
EasyUI 中combotree 默认不能选择父节点的实现方法
2016/11/07 Javascript
bootstrap警告框使用方法解析
2017/01/13 Javascript
jQuery实现的浮动层div浏览器居中显示效果
2017/02/03 Javascript
从零学习node.js之利用express搭建简易论坛(七)
2017/02/25 Javascript
微信小程序实战之上拉(分页加载)效果(2)
2017/04/17 Javascript
angular2路由切换改变页面title的示例代码
2017/08/23 Javascript
JS函数节流和防抖之间的区分和实现详解
2019/01/11 Javascript
基于vue-cli3创建libs库的实现方法
2019/12/04 Javascript
ant design vue嵌套表格及表格内部编辑的用法说明
2020/10/28 Javascript
微信小程序实现单个或多个倒计时功能
2020/11/01 Javascript
[01:12:35]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第二场 6.2
2018/06/03 DOTA
[01:05:59]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.22
2019/09/05 DOTA
[04:20]DOTA2-DPC中国联赛 正赛 VG vs LBZS 选手采访 1月19日
2021/03/11 DOTA
Python版微信红包分配算法
2015/05/04 Python
Python实现Linux中的du命令
2017/06/12 Python
Python并发:多线程与多进程的详解
2019/01/24 Python
连接pandas以及数组转pandas的方法
2019/06/28 Python
Python PIL读取的图像发生自动旋转的实现方法
2019/07/05 Python
如何用Anaconda搭建虚拟环境并创建Django项目
2020/08/02 Python
HTML5实现获取地理位置信息并定位功能
2015/04/25 HTML / CSS
俄罗斯大型在线书店:Читай-город
2019/10/10 全球购物
What's the difference between deep copy and shallow copy? (深拷贝与浅拷贝有什么区别)
2015/11/10 面试题
维稳工作情况汇报
2014/10/27 职场文书
Spring整合Mybatis的全过程
2021/06/28 Java/Android
解析MySQL索引的作用
2022/03/03 MySQL