详解nginx配置vue h5 history去除#号


Posted in Javascript onNovember 09, 2020

vue的默认配置是使用hash模式,这样我们访问的时候都带有了一个#号,再支付回调的地址或者其他原因不支持#号或者不喜欢#号这种模式,优势就出现了需要去除#号,于是vue端就需要配置该模式,并且使用懒加载,vue端的配置如下:

首先先声明一下,这是使用vue+nginx实现前后端分离的项目,并且使用vue axios实现代理功能(允许跨域并且服务端已经开启跨域),

详解nginx配置vue h5 history去除#号

然后就是打包的配置:

详解nginx配置vue h5 history去除#号

!!!注意,这里配置的assetsPublicPath一定要配置成  "/"  而不是  "./"之类的,不然nginx服务端即使配置成为了vue h5 history模式,也会出现如下错误:

Uncaught SyntaxError: Unexpected token <
manifest.16a4233693dc526194f6.js:1 Error: Loading chunk 23 failed.
  at HTMLScriptElement.t (manifest.16a4233693dc526194f6.js:1)
d.oe @ manifest.16a4233693dc526194f6.js:1
Promise.catch (async)
component @ app.a879af571e30c08073af.js:1
(anonymous) @ vendor.8f8ebced8a21d4a0633a.js:6
(anonymous) @ vendor.8f8ebced8a21d4a0633a.js:6
(anonymous) @ vendor.8f8ebced8a21d4a0633a.js:6
ve @ vendor.8f8ebced8a21d4a0633a.js:6
(anonymous) @ vendor.8f8ebced8a21d4a0633a.js:6
h @ vendor.8f8ebced8a21d4a0633a.js:6
i @ vendor.8f8ebced8a21d4a0633a.js:6
i @ vendor.8f8ebced8a21d4a0633a.js:6
(anonymous) @ vendor.8f8ebced8a21d4a0633a.js:6
(anonymous) @ vendor.8f8ebced8a21d4a0633a.js:6
(anonymous) @ app.a879af571e30c08073af.js:1
h @ vendor.8f8ebced8a21d4a0633a.js:6
i @ vendor.8f8ebced8a21d4a0633a.js:6
i @ vendor.8f8ebced8a21d4a0633a.js:6
i @ vendor.8f8ebced8a21d4a0633a.js:6
pe @ vendor.8f8ebced8a21d4a0633a.js:6
_e.confirmTransition @ vendor.8f8ebced8a21d4a0633a.js:6
_e.transitionTo @ vendor.8f8ebced8a21d4a0633a.js:6
t.push @ vendor.8f8ebced8a21d4a0633a.js:6
Pe.push @ vendor.8f8ebced8a21d4a0633a.js:6
b @ vendor.8f8ebced8a21d4a0633a.js:6
t @ vendor.8f8ebced8a21d4a0633a.js:12
Fi.t._withTask.s._withTask @ vendor.8f8ebced8a21d4a0633a.js:12
vendor.8f8ebced8a21d4a0633a.js:6 Error: Loading chunk 23 failed.
  at HTMLScriptElement.t (manifest.16a4233693dc526194f6.js:1)

所以,请谨慎配置,坑比较多,下面就是nginx服务端的配置了,

server {
    listen    80 default_server;
    listen    [::]:80 default_server;
    server_name _;
    root     /usr/share/nginx/dist;

    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;

    #根据路由设置,避免出现404
    location ^~ /api/ {
        add_header 'Access-Control-Allow-Origin' '*';
        proxy_pass http://service.xxxx.com/;
    }
    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;
    }
    error_page 404 /404.html;
      location = /40x.html {
    }

    error_page 500 502 503 504 /50x.html;
      location = /50x.html {
    }
  }

这样配置就算是配置好了,然后就不会出现页面刷新显示404的错误了。

到此这篇关于详解nginx配置vue h5 history去除#号的文章就介绍到这了,更多相关nginx配置h5去除#号内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
jquery 面包屑导航 具体实现
Jun 05 Javascript
实例分析javascript中的call()和apply()方法
Nov 28 Javascript
JavaScript实现向右伸出的多级网页菜单效果
Aug 25 Javascript
js实现接收表单的值并将值拼在表单action后面的方法
Nov 23 Javascript
原生JS实现拖拽图片效果
Aug 27 Javascript
js将滚动条滚动到指定位置的简单实现方法
Jun 25 Javascript
BootStrap使用file-input插件上传图片的方法
Sep 05 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单
Nov 25 Javascript
Node.js使用NodeMailer发送邮件实例代码
Mar 06 Javascript
Angular 4依赖注入学习教程之ValueProvider的使用(七)
Jun 04 Javascript
浅谈angularJS的$watch失效问题的解决方案
Aug 11 Javascript
原生JS与CSS实现软件卸载对话框功能
Dec 05 Javascript
axios解决高并发的方法:axios.all()与axios.spread()的操作
Nov 09 #Javascript
vue 解决在微信内置浏览器中调用支付宝支付的情况
Nov 09 #Javascript
详解Vue中的watch和computed
Nov 09 #Javascript
vue-axios同时请求多个接口 等所有接口全部加载完成再处理操作
Nov 09 #Javascript
解决vue 使用axios.all()方法发起多个请求控制台报错的问题
Nov 09 #Javascript
Echarts在Taro微信小程序开发中的踩坑记录
Nov 09 #Javascript
Vue路由权限控制解析
Nov 09 #Javascript
You might like
学习php设计模式 php实现门面模式(Facade)
2015/12/07 PHP
document.compatMode介绍
2009/05/21 Javascript
js loading加载效果实现代码
2009/11/24 Javascript
再谈javascript图片预加载技术(详细演示)
2011/03/12 Javascript
在js文件中如何获取basePath处理js路径问题
2013/07/10 Javascript
基于jquery异步传输json数据格式实例代码
2013/11/23 Javascript
JavaScript调用客户端的可执行文件(示例代码)
2013/11/28 Javascript
checkbox全选所涉及到的知识点介绍
2013/12/31 Javascript
初始Nodejs
2014/11/08 NodeJs
Javascript实现检测客户端类型代码封包
2015/12/03 Javascript
jQuery xml字符串的解析、读取及查找方法
2016/03/01 Javascript
JS读写CSS样式的方法汇总
2016/08/16 Javascript
Bootstrap table右键功能实现方法
2017/02/20 Javascript
Javascript 严格模式use strict详解
2017/09/16 Javascript
详解AngularJS 过滤器的使用
2018/06/02 Javascript
LayUI表格批量删除方法
2018/08/15 Javascript
小程序中this.setData的使用和注意事项
2019/08/28 Javascript
python中__slots__用法实例
2015/06/04 Python
Python的时间模块datetime详解
2017/04/17 Python
Python3 中把txt数据文件读入到矩阵中的方法
2018/04/27 Python
python判断自身是否正在运行的方法
2019/08/08 Python
python读取Excel表格文件的方法
2019/09/02 Python
python飞机大战pygame游戏框架搭建操作详解
2019/12/17 Python
pytorch数据预处理错误的解决
2020/02/20 Python
tensorflow之读取jpg图像长和宽实例
2020/06/18 Python
纯HTML5+CSS3制作图片旋转
2016/01/12 HTML / CSS
CSS3实现水平居中、垂直居中、水平垂直居中的实例代码
2020/02/27 HTML / CSS
英国时尚和家居用品零售商:Matalan
2021/02/28 全球购物
给校长的建议书
2014/03/12 职场文书
未受刑事制裁公证证明
2014/09/20 职场文书
教师作风建设剖析材料
2014/10/11 职场文书
三方股份合作协议书
2014/10/13 职场文书
司法局群众路线教育实践活动开展情况总结
2014/10/25 职场文书
银行客户经理培训心得体会
2016/01/09 职场文书
Java 泛型详解(超详细的java泛型方法解析)
2021/07/02 Java/Android
nodejs利用readline提示输入内容实例代码
2021/07/15 NodeJs