tomcat如何去掉项目名称直接访问项目
作者:崩坏的芝麻
tomcat去掉项目名称直接访问项目
需求:
把发布到Tomcat下的web项目,访问路径去掉项目名称
就是说我在服务器上发布的网页,不需要加项目名,根据端口号就能直接访问了
方法一
原理:
Tomcat的默认根目录是ROOT,实际上ROOT这个项目在实际生产环境是没有用的,所以我们可以用我们的项目覆盖ROOT项目
操作过程:
1.删除ROOT下所有文件及文件夹
2.把我们项目的war包解压后,项目目录下的所有文件和子目录都拷贝到ROOT目录下即可 或者干脆:直接删掉ROOT目录,然后把我们的项目打包名称改成ROOT.war,放到webapps下就行
方式二:(推荐)
原理:
Tomcat本身可以配置虚拟目录。方法就是在Server.xml中节点下加入Context信息。
如我们可以配置<Context path="/abc" docBase=“D:\app\abc” …/>,那我们可以通过地址http://localhost:8080/abc来访问我们放在D:\app\下面的abc项目。
我们可以把这个path="/abc"修改为path=""。
意思就是把abc映射到根目录,访问路径就会变成http://localhost:8080/。
操作过程:
按照配置虚拟目录的方式,在下添加一个Context节点,具体配置如下:
<Engine name="Catalina" defaultHost="localhost"...> ... <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context path="" docBase="你的项目名" reloadable="true" /> <!--注:我这里使用的是相对路径,项目是放在Tomcat的webapps目录下的,当然也可以改为绝对路径--> ... </Host> ... </Engine>
如果端口是8080, 即可直接 http://ip:8080 就能访问
tomcat去掉项目名后,访问路径依旧有问题的解决方案
Tomcat去掉项目名后,能访问主页,却访问不了其他页面
将个人博客发布到服务器上后,blog.war包放在了/usr/local/tomcat/apache-tomcat-8.5.66/webapps目录下,然后打开server.xml增加如下配置,理论上可以去掉路径访问的项目名(这里项目名是blog)。
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context path="" docBase="/usr/local/tomcat/webapps/blog" reloadable="false"/>
出现的问题
http://161.62.71.204/只能访问主页,访问其他页面报404
访问http://161.62.71.204/ 后,确实能进入博客主页,但点击其他博客页面报404,如 访问http://161.62.71.204/blog/44,却找不到该文件
后来发现:必须加上项目名才能访问其他所有页面,如http://161.62.71.204/blog/blog/44
这样不符合当初去掉项目名的初衷
解决方案
在 appBase=“webapps"改成"webapps/项目名”
<Host name="localhost" appBase="webapps/blog" unpackWARs="true" autoDeploy="true"> <Context path="" docBase="/usr/local/tomcat/webapps/blog" reloadable="false"/>
http://161.62.71.204/就能访问所有页面了
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。