将vue-cli打包文件部署到非根目录配置

7dxwy| 阅读:1363 发表时间:2018-04-14 10:01:50 asdasd

vue-cli打包文件默认是部署到根目录环境的,所以我们在发布时会碰到把打包文件放到非根目录时会访问不到路由路径,原因是路由是通过index.html引入的js控制的,路径不对访问不到index.html,所以访问不到。以下是解决办法:

1.config/index.js:

build对象assetsPublicPath修改目录(比如代码部署根目录下的dist目录则配置成:assetsPublicPath: '/dist/'

2.src/router/index.js:

routes配置信息,修改路由路径

  routes: [

    {

      path: '/dist/',

      name: 'Start',

      component: Start

    },

    {

      path: '/dist/task/:id',

      name: 'Start',

      component: Start

    }

    ...

  ]

3.修改nginx配置:

server {

        listen 8765;

        root   "E:/vue";//项目根目录

        index index.html index.php;

        location /dist {

            try_files $uri $uri/ /dist/index.html =404;

        }

}

原理:vue路由是基于js控制的,在修改assetsPublicPath,路由地址的同时,需要在nginx服务器配置对所有的路径或者文件夹进行跳转,重定向到首页index.html下,这样就都能找到路由了。


附nginx指令说明:

try_files指令

语法:try_files file ... uri 或 try_files file ... = code

默认值:无

作用域:server location

其作用是按顺序检查文件是否存在,返回第一个找到的文件或文件夹(结尾加斜线表示为文件夹),如果所有的文件或文件夹都找不到,会进行一个内部重定向到最后一个参数。

需要注意的是,只有最后一个参数可以引起一个内部重定向,之前的参数只设置内部URI的指向。最后一个参数是回退URI且必须存在,否则会出现内部500错误。命名的location也可以使用在最后一个参数中。与rewrite指令不同,如果回退URI不是命名的location那么$args不会自动保留,如果你想保留$args,则必须明确声明。

location指令

语法:location [=|~|~*|^~|@] /uri/ { … }

默认值:无

作用域:server

location指令是用来为匹配的URI进行配置,URI即语法中的"/uri/",可以是字符串或正则表达式。但如果要使用正则表达式,则必须指定前缀。 [@] 即是命名location,一般只用于内部重定向请求。


本文由7dxwy.com发表并编辑,转载此文章须经作者同意,并请附上出处及本页链接。如有侵权,请联系本站删除。

湘公网安备 43012402000343号