之前项目中使用的都是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不太熟,还需要继续研究。先写篇文章记录下怎么修改