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

如何在urlrewrite.xml中使用环境变量?Tomcat变量未解析问题

问题解决方案

1. 正确读取JVM系统变量

UrlRewriteFilter不支持直接用${contextName}解析JVM启动参数,需要使用它内置的%{system-property:变量名}语法来读取系统属性。修改你的urlrewrite.xml规则如下:

<?xml version="1.0" encoding="utf-8"?>
<!--
    Configuration file for UrlRewriteFilter
    http://tuckey.org/urlrewrite/
-->
<urlrewrite use-query-string="true" default-match-type="wildcard">
<rule>
        <from>%{system-property:contextName}</from>
        <to type="permanent-redirect" last="true">abc.com</to>
</rule>
</urlrewrite>

2. 排查%{context-path}失效的可能原因

如果之前尝试%{context-path}未成功,可从以下几点排查:

  • 确认项目部署的上下文路径:若项目以ROOT.war部署,上下文路径为空;若为companyApp.war,路径为/companyApp,规则中的匹配路径需要对应(比如要写/%{context-path}而非直接写变量)
  • 检查UrlRewriteFilter版本:部分旧版本对context-path变量的支持存在缺陷,建议升级至最新稳定版
  • 验证匹配逻辑:确保<from>的格式符合实际请求路径,比如如果是匹配以上下文路径开头的所有请求,应该写<from>/%{context-path}(.*)</from>

3. 验证变量解析状态

可添加测试规则确认变量是否被正确读取:

<rule>
    <from>/test-vars</from>
    <to type="redirect">/check?contextName=%{system-property:contextName}&contextPath=%{context-path}</to>
</rule>

访问/test-vars后,查看跳转后的URL参数,即可确认两个变量是否获取到了预期值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 00:53:20