vue在history模式下部署到nginx,无法刷新出页面

您所在的位置:网站首页 vue解决刷新后找不到路由 vue在history模式下部署到nginx,无法刷新出页面

vue在history模式下部署到nginx,无法刷新出页面

2023-12-24 00:25| 来源: 网络整理| 查看: 265

概述

  在使用vue的vue-router的时候,有时后不想看到路径中的‘#’,所以这个时候就使用感到了mode模式下的history模式,当时使用这个模式之后,打包部署到nginx之后发现只有在IP+PORT的情况下才能出来页面,然而只要端口后面有路径就无法刷新出来页面。

原因描述以及解决方案 export default new Router({ mode: 'history', //后端支持可开 base: '/wtlicence', scrollBehavior: () => ({ y: 0 }), routes: constantRouterMap });

  当我们进行项目的主页的时候,一切正常,可以访问,但是当我们刷新页面或者直接访问路径的时候就会返回404,那是因为在history模式下,只是动态的通过js操作window.history来改变浏览器地址栏里的路径,并没有发起http请求,但是当我直接在浏览器里输入这个地址的时候,就一定要对服务器发起http请求,但是这个目标在服务器上又不存在,所以会返回404,怎么解决呢?。

  官网也是给出了解决的方案: 我们需要在nginx的配置中做出如下的配置:

location / { try_files $uri $uri/ /index.html; }

try_files 指令:

语法:try_files file … uri 或 try_files file … = code 默认值:无 作用域:server location   其作用是按顺序检查本地(服务器)文件是否存在,返回第一个找到的文件或文件夹(结尾加斜线表示为文件夹),如果所有的文件或文件夹都找不到,会进行一个内部重定向到最后一个参数。   需要注意的是,只有最后一个参数可以引起一个内部重定向,之前的参数只设置内部URI的指向。最后一个参数是回退URI且必须存在,否则会出现内部500错误。命名的location也可以使用在最后一个参数中。与rewrite指令不同,如果回退URI不是命名的location那么args不会自动保留,如果你想保留args,则必须明确声明。

但是其实这官方的demo是有一些需要注意的地方的。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3