如何将子域映射到Tomcat 6上的webapp(包括root webapp)?

Kaw*_*awu 21 subdomain tomcat web-applications tomcat6

科目说的一切.我想要的是将每个子域映射到webapp,如:

http://root.domain.com:8080 -> http://domain.com:8080/
http://manager.domain.com:8080 -> http://domain.com:8080/manager
http://abc.domain.com:8080 -> http://domain.com:8080/abc
http://def.domain.com:8080 -> http://domain.com:8080/def
Run Code Online (Sandbox Code Playgroud)

在本地主机上这将是

http://root.localhost:8080 -> http://localhost:8080/
http://manager.localhost:8080 -> http://localhost:8080/manager
http://abc.localhost:8080 -> http://localhost:8080/abc
http://def.localhost:8080 -> http://localhost:8080/def
Run Code Online (Sandbox Code Playgroud)

理想情况下,我想使用端口80而不是8080,但这是另一个故事.我很乐意首先使用端口8080,以便URL末尾的路径消失.

注意,箭头不是重定向,但如果我按原样离开Tomcat,我会输入.

我知道Tomcat docs页面http://tomcat.apache.org/tomcat-6.0-doc/virtual-hosting-howto.html.我已多次阅读,但没有取得多大进展.我编辑了etc/hosts以添加127.0.0.1 bbstats.localhost.然后我补充道

<Host name="bbstats.localhost" appBase="webapps/bbstats"
      unpackWARs="true" autoDeploy="true"
      xmlValidation="false" xmlNamespaceAware="false">
</Host>
Run Code Online (Sandbox Code Playgroud)

到conf目录中的Tomcat的server.xml.我的webapp的context.xml是:

<Context path="/bbstats" docBase="bbstats" debug="5" reloadable="true" crossContext="true"> 
</Context>
Run Code Online (Sandbox Code Playgroud)

重启Tomcat.通过Ant重新部署.进入时

HTTP://bbstats.localhost:8080 /

进入浏览器,我得到一个空白屏幕.

当使用appBase ="webapps"而不是appBase ="webapps/bbstats"时,我会看到Tomcat的root应用程序.后一种行为是预期的.但是如何让bbstats.localhost:8080转到bbstats webapp而没有URL中的尾随/ bbstats?

Jos*_*seK 28

您可以尝试<Host>通过给出将每个Web应用程序嵌套在server.xml中作为根webapp path="".我自己没试过.

<Host name="bbstats.localhost" appBase="webapps">
    <Context path="" docBase="/bbstats/"/>
</Host>

<Host name="tomcatstuff.localhost" appBase="webapps">
    <Context path="" docBase="/tomcatstuff/"/>
</Host>
Run Code Online (Sandbox Code Playgroud)

  • 使用上面描述的docBase产生了`文档库/ bbstats不存在或者不是可读目录`,通过删除斜杠来解决问题:`<Context path =""docBase ="bbstats"/>`.工作得很好,谢谢! (6认同)
  • 我现在正在使用"<Context path =""docBase ="/ bbstats"/>",它现在可以使用了!:-)注意我还从META-INF/context.xml中删除了路径和docBase.引用http://old.nabble.com/appbase-and-docbase-td18616249.html:"... META-INF/context.xml中的<Context>元素不允许路径和docBase属性"我进一步说发现您的技术已通过http://oreilly.com/java/archive/tomcat-tips.html确认.干杯! (2认同)
  • 您好,请指导我使用tomcat for windows server实现子域配置 (2认同)