Vue使用History模式【非根目录】

455 阅读1分钟

之前项目中使用的都是Hash模式,在做微信oAuth2登录的时候会出现类似的奇葩地址: https://www.xxx.com/admin?code=xxxxxxx&state=state#/detail/1?corpId=xxxx
本来期望的是 https://www.xxx.com/admin/#/detail/1?code=xxxxx&state=state&corpId=xxx
上述奇葩的url导致会获取url中的参数比较困难,需要写一堆奇葩逻辑,因此想到了使用Vue-router的History模式

Vue Router的配置

因为我用的是3.X版本的Vue Router,写法如下:

    new Router({
        mode: 'history', # 声明使用history模式,默认是hash
        base: '/admin/' # 这里的base要与vue-config中的publicPath相同
        ... # 其余的配置
    })

Vue这边的配置就算完成了,接下来就需要配置下代理,官方提供了几个配置示例。但是由于我们的项目不在根目录下边,不能完全照搬官网的例子

nginx配置

由于这个项目使用的是nginx,所以这里只贴上了nginx的实现方式

location /admin { # 这里的admin需要与vue的publicPath一致
    root /www/public_web/admin; # 这里需要根据实际情况来写,就是项目的index.html所处的位置
    try_files $uri /index.html break;
}

由于nginx不太熟,还需要继续研究。先写篇文章记录下怎么修改