【问题标题】:Tomcat URL Redirect IssueTomcat URL 重定向问题
【发布时间】:2020-04-27 16:14:25
【问题描述】:

雄猫:8.5.30 爪哇 8 操作系统:macOS Mojave 10.14.6

作为一个示例项目,我正在尝试将任何 url:/{dynamicValue}/entity/{entityID} 重定向到 /entity/{dynamicValue}/entity/{entityID}。这里的“实体”是我的上下文,将引用 webapps 目录中的 entity.war。

上下文文件(路径:apache-tomcat-8.5.30/conf/context.xml):

<Context docBase="ROOT" path="/" reloadable="true" crossContext="true">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
<Valve className="org.apache.catalina.valves.rewrite.RewriteValve"/>
</Context>

重写配置文件:(路径:apache-tomcat-8.5.30/webapps/ROOT/WEB_INF/rewrite.config.xml)

RewriteRule ^/(.*)/(.*)/(.*)$   $2/$1/$2/$3 [L,NE]

暴露的端点:/{dynamicValue}/entity/{entityID}

内部端点:/entity/{dynamicValue}/entity/{entityID}

直接对“内部端点”进行的任何调用都可以正常工作。但是,对“暴露端点”的 API 调用不会被重定向到“内部端点”。 (返回 404)

有什么建议吗?

参考:Re-writing tomcat 8 urls

【问题讨论】:

  • 您的 rewrite.config 文件命名不正确。
  • 哦,这很奇怪。在 sublime 中保存和打开它最后添加了一个 *.xml 扩展名。使用终端重命名和保存工作正常。重定向按预期工作。请发表您的评论作为答案,我会接受它

标签: tomcat url-rewriting tomcat8 tomcat-valve


【解决方案1】:

rewrite.config 文件名中的问题。

此外,Tomcat 不支持基于动态/正则表达式的上下文,这是因为定义明确的原则。如果您有这样的用例,我强烈建议您弄清楚对此的确切需求以及是否可以改进建模。

【讨论】:

    猜你喜欢
    • 2021-03-30
    • 1970-01-01
    • 1970-01-01
    • 2012-10-07
    • 2017-06-01
    • 2018-02-14
    • 2015-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多