整体思路:
后端和前端都打包用tomcat部署。部署在同一个tomcat下的webapp目录下。这样不会出现跨域问题。开发时前后端分离开发,为了解决跨域,在vite.config.js中会配置proxy反向代理,但是打包发布的时候,这个代理时不生效的,需要在web容器中配置代理。
这里前后端都用同一个tomcat发布的话,不存在跨域,就不用配置代理了。

1、项目打包之前,需要调整一点配置。假如前端访问地址时 127.0.0.1:8081/glui,这样项目访问后台接口时,访问的地址就会是127.0.0.1:8081/gxzm。这里的gxzm就是你的后端程序名,不用再通过反向代理取转发请求了。在这里插入图片描述
vite.config.js中修改配置
在这里插入图片描述

这样就可以将前端vue项目打包了。本项目用到了vite框架,打包命令
yarn build:prod
生成的dist直接复制到tomcat 的webapp目录下,改一下文件名,访问的时候就访问 ip:端口/修改后的文件名 就可以了。
2、这个时候访问程序,以及调用后台接口都正常,但是刷新页面就会有404。官方解释:
在这里插入图片描述
https://router.vuejs.org/zh/guide/essentials/history-mode.html
所以,tomcat还需要改一点配置。
server.xml中增加如下配置,放在host标签内。

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

在项目根目录下创建 WEB-INF文件夹,里面增加文件rewrite.config,文件内容:

#rewrite for tomcat
 
RewriteRule ^/index\.html$ - [L]
 
RewriteCond %{REQUEST_PATH} !-f
RewriteRule (.*) /index.html [L]

最后重启tomcat,问题解决!

GitHub 加速计划 / vu / vue
207.54 K
33.66 K
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:2 个月前 )
73486cb5 * chore: fix link broken Signed-off-by: snoppy <michaleli@foxmail.com> * Update packages/template-compiler/README.md [skip ci] --------- Signed-off-by: snoppy <michaleli@foxmail.com> Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 4 个月前
e428d891 Updated Browser Compatibility reference. The previous currently returns HTTP 404. 5 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐