You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于主机名实现不同页面跳转 - Tomcat环境

解决Tomcat多域名跳转至不同ORDS Apex应用的方案

既然你已经配置好了两个Host且共享同一个appBase,用Tomcat自带的RewriteValve就能完美搞定这个需求,完全不需要额外前置代理,具体步骤如下:

1. 给每个Host启用RewriteValve

先修改你现有的Host配置,给每个Host添加RewriteValve,这样Tomcat会加载对应域名的专属重写规则。

修改后的domainOne.me Host配置:

<Host name="domainOne.me" appBase="webapps" unpackWARs="true" autoDeploy="true">
  <Alias>www.domainOne.me</Alias>
  <Alias>domainOne.me</Alias>
  <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="subvencije_access_log" suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" />
  <!-- 启用RewriteValve,加载该域名的重写规则 -->
  <Valve className="org.apache.catalina.valves.rewrite.RewriteValve" />
</Host>

修改后的domainTwo.me Host配置:

<Host name="domainTwo.me" appBase="webapps" unpackWARs="true" autoDeploy="true">
  <Alias>www.domainTwo.me</Alias>
  <Alias>domainTwo.me</Alias>
  <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="inovacije_access_log." suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" />
  <!-- 启用RewriteValve,加载该域名的重写规则 -->
  <Valve className="org.apache.catalina.valves.rewrite.RewriteValve" />
</Host>

2. 创建每个域名的重写规则文件

Tomcat的RewriteValve会从conf/Catalina/[域名]/目录下读取rewrite.config文件,所以我们需要为每个域名创建对应的规则文件:

针对domainOne.me(含www别名)

在Tomcat的conf/Catalina/目录下新建domainOne.me文件夹,然后在里面创建rewrite.config文件,内容如下:

# 匹配domainOne.me根路径的请求,永久跳转到指定ORDS应用
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^/$ /ords/f?p=111 [R=301,L]

# 匹配www.domainOne.me根路径的请求,执行同样跳转
RewriteCond %{HTTP_HOST} ^www\.domainOne\.me$
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^/$ /ords/f?p=111 [R=301,L]

针对domainTwo.me(含www别名)

同样在conf/Catalina/下新建domainTwo.me文件夹,创建rewrite.config文件,内容如下:

# 匹配domainTwo.me根路径的请求,永久跳转到指定ORDS应用
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^/$ /ords/f?p=222 [R=301,L]

# 匹配www.domainTwo.me根路径的请求,执行同样跳转
RewriteCond %{HTTP_HOST} ^www\.domainTwo\.me$
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^/$ /ords/f?p=222 [R=301,L]

3. 关键细节说明

  • R=301是永久重定向,对搜索引擎友好;如果只是临时测试,可以改成R=302(临时重定向)
  • [L]表示这条规则是最后一条,匹配后不会再处理后续规则,避免冲突
  • 因为两个Host共享同一个appBase,所以/ords路径在两个域名下都能正常访问,重定向后会正确指向对应的Apex应用
  • 确保你的Tomcat版本在7.0.42及以上(ORDS要求的Tomcat版本通常都满足这个条件),RewriteValve是这个版本之后Tomcat自带的功能

4. 生效测试

配置完成后重启Tomcat服务器,然后用浏览器或curl命令验证:

  • 访问http://domainOne.me或http://www.domainOne.me,应该自动跳转到http://domainOne.me/ords/f?p=111
  • 访问http://domainTwo.me或http://www.domainTwo.me,应该自动跳转到http://domainTwo.me/ords/f?p=222

内容的提问来源于stack exchange,提问作者Janko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 15:48:12