tomcat中配置的多个<host>为什么共享着一个根目录

未央 发布于 2011/06/27 21:08
阅读 6K+
收藏 1

软件运行环境:   windows xp sp3 ,  tomcat 6.0.30

报错:tomcat无报错

问题描述:我有一个abc.com的域名,现想要增加二级域名 " a.abc.com " ,预期通过该二级域名访问一个位于 " D:\a " 文件夹下的项目 ,我已在系统的 " hosts " 表中添加 " 127.0.0.1 abc.com",并在tomcat/conf 目录下的 " server.xml "中添加

<Host name="a.abc.com" unpackWARs="true" autoDeploy="true"
          xmlValidation="false" xmlNamespaceAware="false" appBase="webapps">

<Context path="" docBase="D:\a"/>

</Host>

运行tomcat,访问a.abc.com出现预期的效果(即  存放在 " D:\a " 下的网页),但是,访问 " a.abc.com/admin " 路径却会重新定位到 "www.abc.com/admin" 下(也就是默认的localhost <host>的路径下),请问各位先辈,这该怎么配置才能解决这个问题?

我已尝试的方法:

  • 修改 "server.xml" 中的<host>标签的 appBase 属性为 " D:\a " 目录,tomcat报错,错误信息的大意是 " D:\a " 下找不到其他应该加载的项目。

小弟不胜感激!

加载中
0
保罗的寓言
保罗的寓言

根据域名给tomcat设置虚拟目录的方法,根据你的描述,和配置文件中的配置。

解释你的疑惑, 

首先你的二级域名 " a.abc.com "中没有看到你描述的DNS和你的IP进行映射对应起来,也就是说,当你访问www.a.abc.com的时候,tomcat服务器根本不知道此host对应的ip地址,就会利用配置的default host(localhost)进行处理,

修改之后的配置,重新修改虚拟主机appBase对应的虚拟目录会自动的部署到tomcat服务器中,并且指定context path中对应的应用程序,

tomcat报错的原因可能有:

1、确保你的web程序目录结构符合web结构。

2、使用ping命令查看www.a.abc.com是否能够正常的ping通,如果可以的话,可能是你的端口监听有问题,重新输入www.a.abc.com:8080试试。

0
保罗的寓言
保罗的寓言

补充:

需要将你的二级域名 " a.abc.com "与你的本机IP地址之间进行绑定之后,进行尝试。

未央
未央
谢谢你的回复。 我在系统的hosts表中添加了dns的记录,另外,我在域名提供商处也增加了对" a.abc.com " 域名的解析,ping a.abc.com 会得到跟 ping www.abc.com一样的IP地址,也就是TOMCAT服务器的IP地址
0
保罗的寓言
保罗的寓言

问题解决了吗?

加入dns映射主要的目的是让你的服务器知道你的站点,也就是你是通过本地建立多个站点,每个站点都是需要DNS映射的。

ping的目的不是回显你的IP地址,主要是看看你的站点能不能ping通

0
未央
未央

引用来自“保罗的寓言”的答案

问题解决了吗?

加入dns映射主要的目的是让你的服务器知道你的站点,也就是你是通过本地建立多个站点,每个站点都是需要DNS映射的。

ping的目的不是回显你的IP地址,主要是看看你的站点能不能ping通

问题有进展了,如果把a-project项目部署到a.abc.com下,则可以通过a.abc.com访问到a-projcet目录,不过新的问题来了,就是访问a.abc.com/admin会自动定位到 访问www.abc.com/admin(我把tomcat的原ROOT项目移动到这里了),除非访问一个a.abc.com目录里面特定的目录(也就是www.abc.com中没有的目录),tomcat才会检查a.abc.com/onlyAhave。我还会继续尝试的。

谢谢您的关注!

返回顶部
顶部