java 项目上传到服务器 URL会多出一层根目录 导致请求不通过
线下开发的请求路径是 http://localhost:8888/a/b 实打成 war 的名字是chassis 上传服务器
线上实际的访问路径是 http://服务器ip:端口/项目名称/a/b
也就是 http://114.113.115.116:9999/chassis/a/b
遇到这种情况怎么解决:
一:线下更改 请求路径 保持线下和线上开发一致性
在application.yml中配置多一层请求路径 chassis,线下开发的请求路径就成为 http://localhost:8888/chassis/a/b
这样线上和线下就保持一致性了。
二:不想修改线下的路径,那只能修改线上Tomcat的配置了 有两种解决方法
1,方式一:
原理:Tomcat的默认根目录是ROOT,实际上ROOT这个项目在实际生产环境是没有用的,所以我们可以用我们的项目覆盖ROOT项目
操作过程:
1.删除ROOT下所有文件及文件夹
2.把我们项目的war包解压后,项目目录下的所有文件和子目录都拷贝到ROOT目录下即可
或者有更狠的一招:直接删掉ROOT目录,然后把我们的项目打包名称改成ROOT.war,放到webapps下就行
方式二:
原理:Tomcat本身可以配置虚拟目录。
方法就是在Server.xml中<Engine><Host>节点下加入Context信息。
如我们可以配置<Context path="" docBase="chassis" reloadable="true" />
操作过程:
按照配置虚拟目录的方式,在<Engine><Host>下添加一个Context节点,具体配置如下:
-
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
-
<Context path="" docBase="chassis" reloadable="true" />
-
</Host>
-