Tomcat 7 URL重定向问题:无需第三方工具通过配置实现跳转
当然可以实现!Tomcat本身就自带了RewriteValve组件,完全不需要依赖Tuckey或者Apache httpd这类第三方工具就能搞定你要的重定向需求。下面给你两种实用的配置方式,你可以根据自己的场景来选:
方法一:针对特定域名配置(修改server.xml)
这种方式适合给单个Host(也就是你的www.mydomain.com域名)配置全局重定向规则,步骤如下:
- 打开Tomcat安装目录下的
conf/server.xml文件,找到对应www.mydomain.com的<Host>节点。 - 在该Host节点内添加RewriteValve配置:
<Host name="www.mydomain.com" appBase="webapps" unpackWARs="true" autoDeploy="true"> <!-- 保留你原有的Host配置内容 --> <Valve className="org.apache.catalina.valves.rewrite.RewriteValve" /> </Host>
- 在Tomcat的
conf目录下创建一个名为rewrite.config的文件,写入重定向规则:
# 匹配来源域名是www.mydomain.com的请求 RewriteCond %{HTTP_HOST} ^www\.mydomain\.com$ # 将/value开头的请求重定向到目标域名,保留后续路径参数 RewriteRule ^/value(.*)$ https://www.otherdomain.com/value$1 [R=301,L]
方法二:Web应用级别配置(无需修改server.xml)
如果/value是某个特定Web应用的路径,你可以直接在该应用内部配置,不影响其他应用:
- 找到目标Web应用的
META-INF目录(如果没有就新建一个),创建context.xml文件并添加以下内容:
<Context> <Valve className="org.apache.catalina.valves.rewrite.RewriteValve" /> </Context>
- 在该Web应用的
WEB-INF目录下创建rewrite.config文件,写入和上面完全相同的规则即可。
额外说明
- 如果你的规则很简单,也可以不用单独创建
rewrite.config,直接把规则写在Valve的rewrite属性里,比如:
<Valve className="org.apache.catalina.valves.rewrite.RewriteValve" rewrite=' RewriteCond %{HTTP_HOST} ^www\.mydomain\.com$ RewriteRule ^/value(.*)$ https://www.otherdomain.com/value$1 [R=301,L] ' />
R=301表示永久重定向,适合长期的域名迁移;如果只是临时重定向,可以改成R=302。- 注意:RewriteValve是从Tomcat 7版本开始引入的,如果你用的是更早的版本,可能需要升级Tomcat版本。
- 配置完成后,记得重启Tomcat让配置生效,测试时建议清除浏览器缓存(避免旧的重定向缓存影响结果)。
内容的提问来源于stack exchange,提问作者Raz Zelinger
相关产品推荐
相关产品推荐

