Tomcat配置项目直接通过/访问
遇到一个需求:因为这个域名下只部署了这一个项目,用户想直接通过域名来访问这个项目而不是加一层项目地址。
方式一
修改war文件名:
- 将你的war文件重命名为
ROOT.war
。部署到Tomcat
的webapps
目录即可。- 如果已经存在ROOT文件夹,删除它,以便
Tomcat
自动加解压缩并部署ROOT.war
。- 启动
Tomcat
后,项目可以直接通过https://localhost:8080/
直接访问。
方式二
修改
server.xml
文件:在<Host/>
添加一个<Context/>
并设置path
与docBase
。
<Context path="/" docBase="../webapps/messenger.war" reloadable="true"/>
或者
<Context path="/" docBase="/messenger" reloadable="true"/>
-
path: 指定Web应用程序的上下文路径,即在URL中访问应用程序的路径。例如,
path="/myapp"
将使应用程序在http://localhost:8080/myapp
上可用。 -
docBase: 指定Web应用程序的根目录,可以是WAR文件的路径或已解压的目录。例如,
docBase="/path/to/myapp.war"
或docBase="/path/to/myapp"
。 -
reloadable: 指示是否支持应用程序的自动重新加载。设置为
true
表示支持自动重新加载,便于开发时的快速部署。默认值是false
。
注意
这种方式
webapps
下面一个war包可以会生成两个文件夹,一个是ROOT
,一个是应用程序
的目录。这两个目录下的文件是相同的,也就是**tomcat
把这项目加载了两次**,一个是/
访问,一个是/应用程序
访问的,这两套是相互隔离的。
解决方案
<Context path="/" docBase="${catalina.base}/apps/messenger.war" debug="0" reloadable="true"/>
不把
war
包放入到webapps
中,而是而是通过docBase
来指定war
的路径,这样tomcat
只会在webapps
内生成一个ROOT
目录。