Tomcat URL 重定向问题
Tomcat URL Redirect Issue
Tomcat:8.5.30
Java 8
OS : macOS 莫哈韦沙漠 10.14.6
作为示例项目,我尝试将任何 url : /{dynamicValue}/entity/{entityID} 重定向到 /entity/{dynamicValue}/entity/{entityID}。这里的 'entity' 是我的上下文,将在 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 ^/(.*)/(.*)/(.*)$ /// [L,NE]
公开端点:/{dynamicValue}/entity/{entityID}
内部端点:/entity/{dynamicValue}/entity/{entityID}
直接对 'Internal Endpoint' 进行的任何调用都可以正常工作。但是,API 对 'Exposed Endpoint' 的调用不会被重定向到 'Internal Endpoint'。 (返回 404)
有什么建议吗?
参考:
rewrite.config 文件名中的问题。
此外,Tomcat 不支持基于 dynamic/regex 的上下文,这是因为定义明确的原则。如果您有这样的用例,我强烈建议您弄清楚对此的确切需求,以及您是否可以改进建模。
Tomcat:8.5.30 Java 8 OS : macOS 莫哈韦沙漠 10.14.6
作为示例项目,我尝试将任何 url : /{dynamicValue}/entity/{entityID} 重定向到 /entity/{dynamicValue}/entity/{entityID}。这里的 'entity' 是我的上下文,将在 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 ^/(.*)/(.*)/(.*)$ /// [L,NE]
公开端点:/{dynamicValue}/entity/{entityID}
内部端点:/entity/{dynamicValue}/entity/{entityID}
直接对 'Internal Endpoint' 进行的任何调用都可以正常工作。但是,API 对 'Exposed Endpoint' 的调用不会被重定向到 'Internal Endpoint'。 (返回 404)
有什么建议吗?
参考:
rewrite.config 文件名中的问题。
此外,Tomcat 不支持基于 dynamic/regex 的上下文,这是因为定义明确的原则。如果您有这样的用例,我强烈建议您弄清楚对此的确切需求,以及您是否可以改进建模。