VUE的history模式下除了index外其他路由404报错解决办法


Posted in Javascript onAugust 21, 2019

我们先来看下代码:

location / {
index index.html;
root /dist;
try_files $uri $uri/ /index.html;
}

try_files首先会判断他是文件,还是一个目录,结果发现他是文件,与第一个参数 $uri变量匹配。
然后去到网站目录下去查找文件是否存在,如果存在直接读取返回。如果不存在直接跳转到第三个参数.

现在不明白的是既然跳到了index为什么显示的还是路由后的界面

内容扩展:

问题背景:

vue-router 默认是hash模式,使用url的hash来模拟一个完整的url,当url改变的时候,页面不会重新加载。但是如果我们不想hash这种以#号结尾的路径时候的话,我们可以使用路由的history的模式。比如如下网址:使用hash模式的话,那么访问变成 http://localhost:8080/bank/page/count/#/ 这样的访问,如果路由使用 history的话,那么访问的路径变成 如下:http://localhost:8080/bank/page/count 这样的了;

不过history的这种模式需要后台配置支持。比如:当我们进行项目的主页的时候,一切正常,可以访问,但是当我们刷新页面或者直接访问路径的时候就会返回404,那是因为在history模式下,只是动态的通过js操作window.history来改变浏览器地址栏里的路径,并没有发起http请求,但是当我直接在浏览器里输入这个地址的时候,就一定要对服务器发起http请求,但是这个目标在服务器上又不存在,所以会返回404

怎么解决呢?我们现在可以把所有请求都转发到 http://localhost:8080/bank/page/index.html上就可以了。

解决方案:

对于VUE的router[mode: history]模式在开发的时候,一般都不出问题。是因为开发时用的服务器为node,Dev环境中自然已配置好了。

但对于放到nginx下运行的时候,自然还会有其他注意的地方。总结如下:

在nginx里配置了以下配置后, 可能首页没有问题,但链接其他会出现(404)

location / {
   root D:\Test\exprice\dist;
   index index.html index.htm;
   try_files $uri $uri/ /index.html;
   add_header 'Access-Control-Allow-Origin' '*';
   add_header 'Access-Control-Allow-Credentials' 'true';
   add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
   add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
  }
  
  location ^~/api/ {
   proxy_pass http://39.105.109.245:8080/;
  }

为了解决404,需要通过以下两种方式:

1、官网推荐

location / {
root D:\Test\exprice\dist;

index index.html index.htm;

try_files $uri $uri/ /index.html;

2、匹配errpr_page

location /{
root /data/nginx/html;

index index.html index.htm;

error_page 404 /index.html;
}

3、

server {
  listen  8888;#默认端口是80,如果端口没被占用可以不用修改
  server_name localhost;
  root  E:/vue/my_project/dist;#vue项目的打包后的dist
  location / {
   try_files $uri $uri/ @router;#需要指向下面的@router否则会出现vue的路由在nginx中刷新出现404
   index index.html index.htm;
  }
  #对应上面的@router,主要原因是路由的路径资源并不是一个真实的路径,所以无法找到具体的文件
  #因此需要rewrite到index.html中,然后交给路由在处理请求资源
  location @router {
   rewrite ^.*$ /index.html last;
  }
  #.......其他部分省略
 }

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

Javascript 相关文章推荐
js对象数组按属性快速排序
Jan 31 Javascript
jquery radio 操作代码
Mar 16 Javascript
动态读取JSON解析键值对的方法
Jun 03 Javascript
jquery实现仿新浪微博评论滚动效果
Aug 06 Javascript
基于jquery实现瀑布流布局
Jun 28 Javascript
javascript中eval解析JSON字符串
Feb 27 Javascript
JavaScript实现拖拽元素对齐到网格(每次移动固定距离)
Nov 30 Javascript
小程序图片剪裁加旋转的示例代码
Jul 10 Javascript
实例讲解vue源码架构
Jan 24 Javascript
vue中利用simplemde实现markdown编辑器(增加图片上传功能)
Apr 29 Javascript
JavaScript复制变量三种方法实例详解
Jan 09 Javascript
Vue proxyTable配置多个接口地址,解决跨域的问题
Sep 11 Javascript
详解webpack引用jquery(第三方模块)的三种办法
Aug 21 #jQuery
jqGrid表格底部汇总、合计行footerrow处理
Aug 21 #Javascript
Vue仿微信app页面跳转动画效果
Aug 21 #Javascript
Angular 中使用 FineReport不显示报表直接打印预览
Aug 21 #Javascript
深入理解Vue keep-alive及实践总结
Aug 21 #Javascript
vue element 生成无线级左侧菜单的实现代码
Aug 21 #Javascript
微信小程序仿今日头条导航栏滚动解析
Aug 20 #Javascript
You might like
全文搜索和替换
2006/10/09 PHP
PHP获取昨天、今天及明天日期的方法
2016/02/03 PHP
PHP实现在windows下配置sendmail并通过mail()函数发送邮件的方法
2017/06/20 PHP
PHP实现动态压缩js与css文件的方法
2018/05/02 PHP
对laravel的session获取与存取方法详解
2019/10/08 PHP
Jquery升级新版本后选择器的语法问题
2010/06/02 Javascript
使用ImageMagick进行图片缩放、合成与裁剪(js+python)
2013/09/16 Javascript
jquery操作checkbox示例分享
2014/07/21 Javascript
onmouseover事件和onmouseout事件全面理解
2016/08/15 Javascript
VUE页面中加载外部HTML的示例代码
2017/09/20 Javascript
使用Vue-Awesome-Swiper实现旋转叠加轮播效果&平移轮播效果
2019/08/16 Javascript
解决vue的过渡动画无法正常实现问题
2019/10/31 Javascript
prettier自动格式化去换行的实现代码
2020/08/25 Javascript
JS遍历树层级关系实现原理解析
2020/08/31 Javascript
谈谈JavaScript中的函数
2020/09/08 Javascript
[05:16]《大圣!大圣》——DOTA2新英雄齐天大圣配音李世宏老师专访
2016/12/13 DOTA
跟老齐学Python之使用Python操作数据库(1)
2014/11/25 Python
opencv与numpy的图像基本操作
2019/03/08 Python
python画蝴蝶曲线图的实例
2019/11/21 Python
Python使用os.listdir和os.walk获取文件路径
2020/05/21 Python
一篇文章带你搞定Ubuntu中打开Pycharm总是卡顿崩溃
2020/11/02 Python
Python中用xlwt制作表格实例讲解
2020/11/05 Python
python爬取微博评论的实例讲解
2021/01/15 Python
45个非常奇妙的CSS3 特性应用示例
2012/01/01 HTML / CSS
爱尔兰领先的在线体育用品零售商:theGAAstore
2018/04/16 全球购物
妇产科护士自我鉴定
2013/10/15 职场文书
简历的自荐信
2013/12/19 职场文书
红领巾广播站广播稿
2014/02/01 职场文书
一月红领巾广播稿
2014/02/11 职场文书
春季运动会广播稿大全
2014/02/19 职场文书
财务助理岗位职责范本
2014/10/09 职场文书
2014年护士个人工作总结
2014/11/11 职场文书
给老婆的检讨书(搞笑版)
2015/05/06 职场文书
律政俏佳人观后感
2015/06/09 职场文书
三十年同学聚会感言
2015/07/30 职场文书
python程序的组织结构详解
2021/12/06 Python