Step1 nginx配置

众所周知,vue-router 在使用 history 模式时如果服务器没有相关的配置,刷新会404.文档有给出解决方案。文档中给出的是打包文件在根目录的配置,如果在二级目录下需要做一些修改。

# 例如我的打包文件要放在test目录下,配置如下

server {
    listen       80;
    server_name testhistory.com;
   
    location /test {
      try_files $uri $uri/ /test/index.html;
    }
}

我是在这篇文章找到的解决方案【nginx】History模式的配置细节

修改后运行 nginx -t 检查配置是否正确后运行 nginx -s reload 重启。

Step2 vue.config.js 配置

在 vue.config.js 中配置上公共资源目录

module.exports = {
    publicPath: process.env.NODE_ENV === 'production'
    ? '/test/'
    : '/',
    outputDir: 'test', // 加上这个配置,让打包出来的目录由默认的dist改为h5,方便写部署脚本
    ...
}

Step3 vue-router 配置

除了 js、css 公共资源目录,还有路由配置也要增加基本前缀,为了保证前端路由和服务器的一致

const router = new VueRouter({
  mode: 'history',
  base: '/test/', // 目标目录
  routes
})