记一次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 相关文章推荐
关于js拖拽上传 [一个拖拽上传修改头像的流程]
Jul 13 Javascript
25个非常棒的jQuery滑块插件和教程小结
Sep 02 Javascript
javascript代码编写需要注意的7个小细节小结
Sep 21 Javascript
JQuery 操作/获取table具体代码
Jun 13 Javascript
JavaScript实现复制功能各浏览器支持情况实测
Jul 18 Javascript
jquery禁止回车触发表单提交
Dec 12 Javascript
jQuery+canvas实现的球体平抛及颜色动态变换效果
Jan 28 Javascript
分享10个优化代码的CSS和JavaScript工具
May 11 Javascript
vue中使用ueditor富文本编辑器
Feb 08 Javascript
Vue-Router基础学习笔记(小结)
Oct 15 Javascript
vue基础之事件v-onclick="函数"用法示例
Mar 11 Javascript
微信小程序左滑删除实现代码实例
Sep 16 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
编写PHP的安全策略
2006/10/09 PHP
深入解析PHP内存管理之谁动了我的内存
2013/06/20 PHP
PHP中Header使用的HTTP协议及常用方法小结
2014/11/04 PHP
带你了解PHP7 性能翻倍的关键
2015/11/19 PHP
详解PHP的Yii框架中日志的相关配置及使用
2015/12/08 PHP
PHP parse_ini_file函数的应用与扩展操作示例
2019/01/07 PHP
JQuery CSS样式控制 学习笔记
2009/07/23 Javascript
让iframe子窗体取父窗体地址栏参数(querystring)
2009/10/13 Javascript
jquery判断字符输入个数(数字英文长度记为1,中文记为2,超过长度自动截取)
2010/10/15 Javascript
JavaScript栏目列表隐藏/显示简单实现
2013/04/03 Javascript
JQuery插件iScroll实现下拉刷新,滚动翻页特效
2014/06/22 Javascript
jQuery基于BootStrap样式实现无限极地区联动
2016/08/26 Javascript
第一次动手实现bootstrap table分页效果
2016/09/22 Javascript
使用JQuery实现图片轮播效果的实例(推荐)
2017/10/24 jQuery
微信小程序实现animation动画
2018/01/26 Javascript
vue实现pdf导出解决生成canvas模糊等问题(推荐)
2018/10/18 Javascript
微信小程序实现打卡日历功能
2020/09/21 Javascript
关于vue项目中搜索节流的实现代码
2019/09/17 Javascript
微信小程序网络请求实现过程解析
2019/11/06 Javascript
JS实现动态无缝轮播
2020/01/11 Javascript
jquery插件懒加载的示例
2020/10/24 jQuery
[01:01:29]2018DOTA2亚洲邀请赛 4.4 淘汰赛 VP vs Liquid 第一场
2018/04/05 DOTA
python之DataFrame实现excel合并单元格
2021/02/22 Python
快速解决安装python没有scripts文件夹的问题
2018/04/03 Python
Python3随机漫步生成数据并绘制
2018/08/27 Python
python使用原始套接字发送二层包(链路层帧)的方法
2019/07/22 Python
python实现H2O中的随机森林算法介绍及其项目实战
2019/08/29 Python
Python爬虫过程解析之多线程获取小米应用商店数据
2020/11/14 Python
SmartBuyGlasses荷兰:购买太阳镜和眼镜
2020/03/16 全球购物
绿化工程实施方案
2014/03/17 职场文书
五年级学生期末评语
2014/12/26 职场文书
房地产销售主管岗位职责
2015/02/13 职场文书
给女朋友的道歉短信
2015/05/12 职场文书
Python基础之元类详解
2021/04/29 Python
Python使用mitmproxy工具监控手机 下载手机小视频
2022/04/18 Python
SQL Server中的游标介绍
2022/05/20 SQL Server