方案一:hash 模式
xxx.com/app1/#/index
- 路由路径直接被前端接管,
#后面的是前端路由 - 优点是部署简单
 - 缺点是 url 比较反直觉,也不美观
 
vue.config.js
module.exports = {
  // 默认为 /,表示部署在顶级路径上。打包后的静态资源引用路径为 /xxx.js, /xxx.css
  // 使用 ./ 可以使得打包后的 js、css 等资源的引用路径以 ./ 开头
  // 假如需要部署的子路径为 /app1,那么此处也可以写成 /app1/,这样也可以保证正常引用
  publicPath: './',
}
router.js
export default new Router({
  mode: 'hash',
  ...
});
nginx.conf
location /app1/ {
    alias /var/www/app1/dist/;
    index index.html;
}
方案二:history 模式
xxx.com/app1/index
- 路由都走到 nginx,再由 nginx 转发回前端的入口文件
 - 优点是 url 好看,符合直觉
 - 缺点是需要配合 Web Server 才能实现
 
vue.config.js
module.exports = {
  publicPath: '/app1/',
}
router.js
export default new Router({
  mode: 'history',
  ...
});
nginx.conf
location /app1/ {
    alias /var/www/app1/dist/;
    index index.html;
    try_files $uri $uri/ /app1/index.html;
}