前端vue项目部署到tomcat,一刷新报错404解决方法

2023-11-20

原文链接:https://my.oschina.net/u/1471354/blog/4277008

VUE项目部署到Tomcat之后,刷新页面会出现404。此问题主要是使用了VUE router的History模式

一、解决方案

1-编辑server.xml,在Host的Context中增加以下内容,增加Valve部分内容

<Host name="localhost"  appBase="webapps"
      unpackWARs="true" autoDeploy="true">
  <Context path="/" docBase="front" reloadable="false" >
      <Valve className="org.apache.catalina.valves.rewrite.RewriteValve" />
  </Context>
</Host>

2-在项目下的WEB-INF文件夹(没有WEB-INF需要创建)中创建rewrite.config文件,文件内容如下:

#rewrite for tomcat

RewriteRule ^/index\.html$ - [L]

RewriteCond %{REQUEST_PATH} !-f
RewriteRule (.*) /index.html [L]

以上步骤配置完成之后,重新启动tomcat,404问题就可以解决了

二、问题原理,及更多详解:

VUE router 的history模式问题解答: https://router.vuejs.org/zh/guide/essentials/history-mode.html

在使用这个模式的时候,跳转的连接,直接刷新会提示找不到静态资源,所以要对这个进行兼容。 兼容此问题用到tomcat的rewrite,具体解释详见: http://tomcat.apache.org/tomcat-8.5-doc/rewrite.html

中文介绍(也可以使用谷歌翻译看原文档): https://wiki.jikexueyuan.com/project/tomcat/rewrite.html

1-tomcat的rewrite介绍。

简介
   重写 Valve(Rewrite Valve) 实现 URL 重写功能的方式非常类似于 Apache HTTP Server 的 mod_rewrite 模块。
配置
   重写 Valve 是通过使用 org.apache.catalina.valves.rewrite.RewriteValve 类名来配置成 Valve 的。
   经过配置,重写 Valve 可以做为一个 Valve 添加到 Host 中。参考虚拟服务器文档来了解配置详情。该 Valve 使用包 
   含重写指令的 rewrite.config 文件,且必须放在 Host 配置文件夹中。
   另外,重写 valve 也可以用在 Web 应用的 context.xml 中。该 Valve 使用包含重写指令的 rewrite.config 文 
   件,且必须放在 Web 应用的 WEB-INF 文件夹中。

2-具体使用

2-1如果将valve配置在HOST中,则rewrite.config文件必须放在Host配置文件夹中,示例如下:

编辑server.xml,在Host中增加RewriteValve

<Host name="localhost"  appBase="webapps"
      unpackWARs="true" autoDeploy="true">
  <Valve className="org.apache.catalina.valves.rewrite.RewriteValve" />
  <Context path="/" docBase="front" reloadable="false" /
</Host>

此时,rewrite.config需要放在如下位置:<catalina_base>/conf/Catalina/<Host.name>/rewrite.config

例如我的<catalina_base>是/home/tomcat,<Host.name>是localhost。则存放位置为/home/tomcat/conf/Catalina/localhost/rewrite.config

2-2如果valve配置在Context中,则rewrite.config文件必须放在 Web 应用的 WEB-INF 文件夹中。

server.xml(这里配置只针对单个应用生效)

<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">

    <Context path="/" docBase="front" reloadable="false" >

        <Valve className="org.apache.catalina.valves.rewrite.RewriteValve" />

    </Context>

</Host>

或者直接在context.xml中配置,这里配置全局生效

<?xml version='1.0' encoding='utf-8'?>

<!-- The contents of this file will be loaded for each web application -->

<Context>

    <Valve className="org.apache.catalina.valves.rewrite.RewriteValve" />

    <WatchedResource>WEB-INF/web.xml</WatchedResource>

    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>

</Context>

此情况下,rewrite.config需要放在如下位置:<Host.appBase>/<docBase>/WEB-INF/rewrite.config

例如<Host.appBase>是webapps,<docBase>是front。则具体位置为:webapps/front/WEB-INF/rewrite.config

rewrite.config文件内容

#rewrite for tomcat
#内容解释 第一个规则是如果匹配到index.html文件不进行重写
RewriteRule ^/index\.html$ - [L]

#第二个规则,如果请求路径不是项目中的静态资源,跳转到 index.html 交给vue-router处理。
RewriteCond %{REQUEST_PATH} !-f
RewriteRule (.*) /index.html [L]

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

前端vue项目部署到tomcat,一刷新报错404解决方法 的相关文章

随机推荐

  • MVC模型图

    MVC图
  • 【联想RQ940】联想RQ940更换主板电池+重新设置BIOS

    RQ940服务器告警灯闪烁 连接管理口查看日志 判断问题为主板纽扣电池电压低 纽扣电池型号为CR2032 停业务 关机 下架 拆机 电池位于图片所示位置 可以先将左边RAID卡拆下来 方便更换电池 2 重新设置BIOS 更换电池后 由于BI
  • SpringBoot 微服务 详解

    1 注入 1 1 Bean对象管理 Spring Boot 由于没有XML文件 所以所有的Bean管理都放入在一个配置类中实现 配置类就是类上具有 Configuration的类 这个类就相当于之前的applicationContext x
  • 计算机竞赛 基于CNN实现谣言检测 - python 深度学习 机器学习

    文章目录 1 前言 1 1 背景 2 数据集 3 实现过程 4 CNN网络实现 5 模型训练部分 6 模型评估 7 预测结果 8 最后 1 前言 优质竞赛项目系列 今天要分享的是 基于CNN实现谣言检测 该项目较为新颖 适合作为竞赛课题方向
  • bilibili的评论ip属地显示未知

    现象 出于某些原因 我们在日常使用中的大部分平台都开启了IP地址显示 一般会显示当事人所在的地址 这其中就有一些奇怪的地址 在此不谈魔法 就比如我最近在刷B站的时候 就在评论区发现了一些显示 未知 的ip 而只要点进他们的主页还是会发现他们
  • 广度优先搜索(BFS)(队列实现) 走迷宫

    BFS应用 寻找最短路径或者遍历路径 树 图或者更抽象的 实现方法 队列 为什么bfs需要队列实现 队列的原理是先进先出 而广度优先搜索类似于树的层次遍历 从离根节点最近的点开始向外扩散 因此用队列将最先遍历的点存入 后遍历的点后存入 符合
  • react 父组件调用子组件的方法

    子组件中 const child forwardRef props ref gt useImperativeHandle ref gt 这里面的方法是暴露给父组件的 test console log 我是组件里的test方法 test2 t
  • druid 手动指定数据源_Springboot集成 Druid

    前言 对于数据访问层 无论是Sql还是NoSql SpringBoot默认采用整合SpringData的方式进行统一管理 添加大量的自动配置 屏蔽了很多设置 引入了各种XxxTemplate和XxxRepository来简化我们队数据访问层
  • 【JS 构造

    个人格言 时间是亳不留情的 它真使人在自己制造的镜子里照见自己的真相 Git专栏 Git篇 JavaScript专栏 js实用技巧篇 该专栏持续更新中 目的是给大家分享一些常用实用技巧 同时巩固自己的基础 共同进步 欢迎前来交流 你的一键三
  • Java POI输出excel单元格画斜线

    sheet cell画斜线 首先初始化HSSFWorkbook对象 通过此对象创建excel的一个名称为 line 的sheet 下面是通过sheet对象创建单元格 HSSFWorkbook wb new HSSFWorkbook HSSF
  • springboot分模块问题

    springboot 分模块开发时 mvn clean install报错 Failed to execute goal org springframework boot spring boot maven plugin 1 5 9 REL
  • CentOS系统如何如设置使系统自动锁屏的时间?

    方便大家 Application System Tools Settings Privacy close Screen Lock Lock Screen After Blank For 可以关闭 可以自己设置吧 我设置了1个小时
  • VMWare虚拟机安装的问题

    VMWare虚拟机安装Win10出现 Attempting to start up from 直接上图 选择ISO镜像以后 开启虚拟机出现以下界面 等待一会没有操作以后出现以下界面 解决方法 1 关闭虚拟机电源 一定要关闭 2 找到该虚拟机
  • 简单图文解释冯诺依曼体系结构(通俗易懂版)

    冯诺依曼式计算机主要由输入设备 输出设备 控制器 运算器 存储器该五个组成部分构成 我们可以将该体系结构的运作通过人类接收信息 处理信息 并输出信息这个过程来加以类比理解 人类 当眼睛看到某些信息 这些信息被存储到记忆装置 大脑从记忆装置取
  • 热敏电阻温度特性曲线_空调温度传感器知识学习。

    在空调维修过程中 温度传感器 热敏电阻 故障比例较高 一旦出现开路 短路或特性曲线不良等故障 空调将显示不正常的代码 不能正常工作 由于温度传感器上没有标明参数和阻值 往往在维修中难以确定 就是同一品牌 不同型号 其阻值也不一定相同 温度传
  • CRC校验关键点说明(内附C语言CRC校验库)

    文章目录 目的 CRC校验关键点 参数模型 计算方式 CRC校验库 源文件 使用测试 总结 目的 CRC即循环冗余校验码 Cyclic Redundancy Check 是数据通信领域中最常用的一种查错校验码 其特征是信息字段和校验字段的长
  • 【Arduino基础教程】Moisture Sensor土壤湿度传感器

    Moisture Sensor土壤湿度传感器 Moisture Sensor土壤湿度传感器可读取在其周围的土壤存在的水分的量 因此 它可以用于监视你的花园土壤湿度并提醒你适时浇花 模块特征 供电 3 3v 或者 5v 输出信号 0 4 2v
  • 我在spring4整合hibernate5遇到的问题

    1 nested exception is java lang NoClassDefFoundError org hibernate engine SessionFactoryImplementor hibernate4整合spring3
  • 逆矩阵的算法

    花了10分钟 终于明白矩阵的逆到底有什么用 首先 我们先来看看这个数的倒数 倒数 其实矩阵的逆矩阵也跟倒数的性质一样 不过只是我们习惯用A 1表示 问题来了 既然是和倒数的性质类似 那为什么不能写成1 A 其实原因很简单 主要是因为矩阵不能
  • 前端vue项目部署到tomcat,一刷新报错404解决方法

    原文链接 https my oschina net u 1471354 blog 4277008 VUE项目部署到Tomcat之后 刷新页面会出现404 此问题主要是使用了VUE router的History模式 一 解决方案 1 编辑se