Nginx 配置 Vue history 模式遇到的问题

1 篇文章 0 订阅

昨天晚上给用户上系统,因为需要微信的回调,但是Vue中的#号在微信是不会被认可的,所以回调会出现问题,只有使用history模式去掉#,但是相应的问题就是在刷新后或者直接在浏览器访问某路径会404,查阅了很多文章找了很多方法 都没有生效,最后 使用alias方式解决。

  vue.config.js

 

module.exports = {
    /* 部署生产环境和开发环境下的URL:可对当前环境进行区分,baseUrl 从 Vue CLI 3.3 起已弃用,要使用publicPath */
    /* baseUrl: process.env.NODE_ENV === 'production' ? './' : '/' */
    publicPath: '/',
    /* 输出文件目录:在npm run build时,生成文件的目录名称 */
    outputDir: 'dist',
    /* 放置生成的静态资源 (js、css、img、fonts) 的 (相对于 outputDir 的) 目录 */
    assetsDir: "assets",
    /* 是否在构建生产包时生成 sourceMap 文件,false将提高构建速度 */
    productionSourceMap: false,
    /* 默认情况下,生成的静态资源在它们的文件名中包含了 hash 以便更好的控制缓存,你可以通过将这个选项设为 false 来关闭文件名哈希。(false的时候就是让原来的文件名不改变) */
    filenameHashing: false,
    /* 代码保存时进行eslint检测 */
    lintOnSave: true,
    /* webpack-dev-server 相关配置 */
    devServer: {
        /* 自动打开浏览器 */
        open: false,
        /* 设置为0.0.0.0则所有的地址均能访问 */
        host: '0.0.0.0',
        port: 8082,
        https: false,
        hotOnly: false,
        disableHostCheck:true,
        /* 使用代理 */

    },
}

Nginx配置

 

关键来了。nginx目录:

是不是发现根本没有什么dist目录,

往下看

点开html后发现,里面有dist目录和vue打包出来的前端文件夹assets,还是分开装的,这样就解决,至于为什么我还是不知道,早上复盘了一下,还是没有什么眉目。希望有大佬可以指点一下 谢谢。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要在Vue中使用history模式,您需要对Nginx进行配置以正确处理路由请求。 首先,您需要在Vue的路由器中启用history模式,可以通过以下方式完成: ``` const router = new VueRouter({ mode: 'history', routes: [...] }) ``` 然后,在Nginx配置文件中添加以下代码: ``` location / { try_files $uri $uri/ /index.html; } ``` 这将确保当Nginx服务器接收到路由请求时,它将返回Vue应用程序的index.html文件,并允许Vue路由器处理请求。 最后,确保重新加载Nginx服务器以使更改生效: ``` sudo service nginx reload ``` 这样就完成了Vue history模式Nginx配置。现在,您应该能够使用Vue的路由器进行导航,并且当用户刷新页面或直接访问路由时,Nginx将正确地将请求发送到Vue应用程序。 ### 回答2: Vue是基于组件化开发的JavaScript框架,常用于构建单页面应用(SPA)。Vue提供了路由功能,方便前端开发实现页面之间的路由跳转。其中,Vue的路由模式有两种,一种是hash模式,一种是history模式。在hash模式下,URL中带有#号,如http://localhost/#/home,而在history模式下,URL是真实的路径,如http://localhost/home。在实际开发中,history模式更加友好,更符合我们对URL的期望,但需要特殊的nginx配置。 要在Vue中使用history模式,需要先设置VueRouter的mode属性为history。具体方法如下: ``` javascript import Vue from 'vue' import Router from 'vue-router' Vue.use(Router) const router = new Router({ mode: 'history', routes: [...] }) ``` 设置完后,Vue会使用HTML5的History API来实现前端路由。 接下来,我们需要在nginx服务器中进行配置,来支持history模式nginx是一个开源的高性能Web服务器软件,常被用于作为静态资源服务器和反向代理服务器。我们需要在nginx配置文件中添加以下内容: ``` nginx server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm; try_files $uri $uri/ /index.html; } } ``` 在这里,我们设置了一个nginx的server块,并监听80端口。location /表示匹配到的所有路径,root指定了网站的根目录,index指定默认的访问页面。try_files语句表示当nginx找不到对应的静态资源时,将会跳转到index.html页面,这就是Vue使用history模式所需的。 同时,为了让Nginx生效,我们需要执行以下命令,重新加载nginx配置:sudo nginx -s reload 总结:通过Vuehistory模式,我们可以实现更美观、更友好的URL路径,但需要在nginx服务器中进行配置。通过以上的方法,我们可以轻松实现history模式nginx配置,使我们可以愉快地在Vue中使用history模式了。 ### 回答3: Vue是一款现代化、轻量级且非常有用的前端框架,可以让开发者迅速地创建高质量的单页应用程序。而Vue Router是Vue框架的官方路由管理器,可以帮助我们处理应用程序中的所有路由。 Vue Router支持两种路由模式:Hash模式History模式,其中Hash模式就是默认的模式,而History模式则需要对服务器端和Nginx进行一些配置。 当我们使用Vue Router的History模式时,需要确保我们已经在服务器端正确地配置了路由。这样才能确保我们在浏览器中访问特定页面时,服务器能够正确地响应相关路由。 在Nginx配置Vue Router的History模式非常简单,只需在服务器端的Nginx配置文件中添加以下代码: ``` location / { try_files $uri $uri/ /index.html; } ``` 这段代码的意思是,当请求的URL与文件系统中的文件或目录匹配时,直接返回该文件或目录的内容。如果无法匹配,就返回/index.html中的内容。 这样,当我们在浏览器中访问特定的路由时,Nginx就会返回/index.html的内容,而Vue Router会根据我们的路由配置去渲染对应的组件。这样就能保证Vue Router的History模式正常工作。 总的来说,虽然Nginx配置比较简单,但是我们还是需要正确地配置以确保Vue Router的History模式能够正常运行。只有这样,我们才能在开发原型和生产环境中使用Vue框架和Vue Router,实现快速、高效的前端开发。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值