【发布时间】:2014-11-14 14:29:36
【问题描述】:
我正在尝试在 Tomcat 8.0 中使用 RewriteValve http://tomcat.apache.org/tomcat-8.0-doc/rewrite.html
在$CATALINA_HOME/conf/server.xml,我添加了
<Valve className="org.apache.catalina.valves.rewrite.RewriteValve" />
在主机标签的正下方
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
在$CATALINA_HOME/conf 目录中创建了rewrite.config,内容如下
RewriteRule ^/abc /myapp
http:/host:port/myapp 是一个工作网络应用程序。
所以现在当我转到 http://host:port/abc 时,我希望被重定向到 http://host:port/myapp 但我得到的是 404 the requested resource is not available。
它看起来甚至没有读取我的 rewrite.config 文件。日志目录中的访问日志只报告了"GET /abc HTTP/1.1" 404 1000,没有进一步的细节。
我错过了什么?谢谢
【问题讨论】:
-
您是否为
RewriteValve启用了调试日志记录?日志中有什么相关的吗?乍一看,你所拥有的看起来是正确的。您使用的是什么版本的 Apache Tomcat? -
如何为
RewriteValve启用调试日志记录?我正在使用 Tomcat 8.0.15 -
哦,不幸的是,
RewriteValve不使用自己的(特定于类的)记录器。相反,它记录到其容器的阀门。因此,如果您将<Valve>配置为<Host>的子级,则需要更改主机上的日志级别(例如:org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = DEBUG)。 -
好的,现在我们到了某个地方。调试不起作用。我在 conf/logging.properties 中添加了
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = FINE,并在 localhost.2014-11-19.log 中看到了19-Nov-2014 13:30:21.322 FINE [Catalina-startStop-1] org.apache.catalina.valves.rewrite.RewriteValve.startInternal No configuration resource found: Catalina/localhost/rewrite.config in ...。所以我将我的 rewrite.config 文件从 /conf 移动到 conf/Catalina/localhost ,现在它正在接收我的重写规则。也许文档可以更清楚地说明这一点。谢谢。 -
是的,我注意到文档还有很大的改进空间。
RewriteValve是一个新功能,它的使用范围并不大,所以这是很好的反馈。
标签: tomcat