【问题标题】:How do you map a sub domain to a webapp on Tomcat 6 (including the root webapp)?如何将子域映射到 Tomcat 6 上的 webapp(包括根 webapp)?
【发布时间】:2011-04-12 02:33:21
【问题描述】:

主题说明了一切。我想要的是将每个子域映射到一个 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

在本地主机上这是

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

理想情况下,我想使用端口 80 而不是 8080,但那是另一回事了。我很乐意一开始使用端口 8080,这样 URL 末尾的路径就会消失。

注意,箭头不是重定向,而是如果我让 Tomcat 保持原样,我会输入的内容。

我知道 Tomcat 文档页面 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>

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

<Context path="/bbstats" docBase="bbstats" debug="5" reloadable="true" crossContext="true"> 
</Context>

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

http://bbstats.localhost:8080/

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

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

【问题讨论】:

  • 嗨 Karsten,您的 Tomcat 是否使用上述配置开始清理? catalina 日志中是否有任何错误?
  • 清除我所看到的。 catalina.*.log 中没有错误,只有警告“14.09.2010 17:25:53 org.apache.catalina.startup.HostConfig deployDescriptor WARNUNG: A docBase C:\dev\tomcat\webapps\bbstats inside host appBase has已指定,并将被忽略”,这可能与 context.xml 指定相同的 appBase 和 docBase 值有关。

标签: tomcat web-applications subdomain tomcat6


【解决方案1】:

您能否尝试通过提供path="" 将每个 Web 应用程序嵌套为 server.xml 中的 &lt;Host&gt; 中的根 Web 应用程序。我自己没试过。

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

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

【讨论】:

  • 我现在正在使用“”,它现在可以工作了! :-) 请注意,我还从 META-INF/context.xml 中删除了路径和 docBase。引用old.nabble.com/appbase-and-docbase-td18616249.html:“...... META-INF/context.xml 中的 元素不允许 path 和 docBase 属性”我进一步发现oreilly.com/java/archive/tomcat-tips.html 证实了您的技术。干杯!
  • 使用上面描述的 docBase 产生了一个Document base /bbstats does not exist or is not a readable directory,通过删除斜线解决了问题:&lt;Context path="" docBase="bbstats"/&gt;。效果很好,谢谢!
  • 您好,请指导我使用tomcat for windows server实现子域配置
猜你喜欢
  • 1970-01-01
  • 2014-10-02
  • 1970-01-01
  • 2017-11-28
  • 2013-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-03
相关资源
最近更新 更多