vue+nginx去掉路径中的#
nginx代理多个web项目,所以新增的vue web项目不能直接使用location /
现在有一个项目distribute,vue改动如下
1.修改路由src/router/index.js

export default new Router({
  base: '/distribute/', //多项目情况下的本项目名称
  mode:'history',  //这个是去除路径中显示的#
  routes: [...]    //正常设置的路由信息
})

2.修改build,config/index.js,不必须

  build: {
    // Template for index.html
    index: path.resolve(__dirname, '../distribute/index.html'),

    // Paths
    assetsRoot: path.resolve(__dirname, '../distribute'),
    assetsSubDirectory: 'static',
    assetsPublicPath: '/distribute/',    //一般把原来的'/',改为'./'即可编译使用,多项目情况下加了项目名称
    
    .....
  }


  
3.修改index.html,不必须,视情况而定

<!DOCTYPE html>
<html>
  <head>
      <meta base="/distribute/">  <!-- 多项目情况下加上项目名称 -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no, minimal-ui">
    <title>distribute</title>
  </head>
  <body>
    <div id="app"></div>
    <!-- built files will be auto injected -->
  </body>
</html>

 

以上3个步骤,router是必须要修改,如果index.html中添加了<meta base="/distribute/">,可以不用修改build/config/index.js中的dist路径,assetsPublicPath是一定要改的

 

nginx配置

    location ^~ /distribute/ {
        root /home/www/;
        try_files $uri $uri/ /distribute/index.html;
        index index.html index.htm;
    }

 

Logo

前往低代码交流专区

更多推荐