首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tomcat 8.0重写阀

问Tomcat 8.0重写阀
EN

Stack Overflow用户
提问于 2014-11-14 22:29:36
回答 4查看 19.9K关注 0票数 17

我正在尝试使用Tomcat8.0 http://tomcat.apache.org/tomcat-8.0-doc/rewrite.html中的RewriteValve

在$CATALINA_HOME/conf/server.xml中,我添加了

代码语言:javascript
复制
<Valve className="org.apache.catalina.valves.rewrite.RewriteValve" />

在Host标签的正下方

代码语言:javascript
复制
<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">

在$CATALINA_HOME/conf目录中创建了一个包含以下内容的rewrite.config

代码语言:javascript
复制
RewriteRule ^/abc /myapp

其中http:/host:port/myapp是一个工作的where应用程序。

所以现在当我转到http://host:port/abc时,我希望被重定向到http://host:port/myapp,但我得到的却是404 the requested resource is not available。

它看起来甚至不像是在读取我的rewrite.config文件。"GET /abc HTTP/1.1" 404 1000目录中的访问日志只报告日志,没有进一步的详细信息。

我遗漏了什么?谢谢

EN

回答 4

Stack Overflow用户

发布于 2015-01-03 00:22:50

在Tomcat文档中,http://tomcat.apache.org/tomcat-8.0-doc/rewrite.html是这样写的

可将重写阀配置为添加到主机中的阀。有关如何配置它的信息,请参阅虚拟服务器文档。它将使用包含重写指令的rewrite.config文件,它必须放在主机配置文件夹中。

因此,尝试将rewrite.config迁移到$CATALINA_HOME/conf/Catalina/localhost中

小提示:您可能在rewrite.config中拼写错误(例如xxRewriteRule ),然后如果tomcat读取此文件,则会失败。我认为在你的例子中,即使你拼错了什么东西,tomcat也会启动(因为它没有被读)。

票数 14
EN

Stack Overflow用户

发布于 2015-01-31 01:38:25

如果您希望使用与默认路径$CATALINA_HOME/conf/Catalina/localhost不同的路径,则可以使用RewriteValve xml定义中的字段来指定配置文件的相对路径。(诚然,我没有用过这个。)

或者,您可以将阀添加到$CATALINA_HOME/conf/context.xml,然后将rewrite.config移到web应用程序的WEB-INF文件夹中。

从documentation

它也可以在webapp应用程序的context.xml中。然后,阀门将使用包含重写指令的rewrite.config文件,该文件必须放在web应用程序

的WEB-INF文件夹中

票数 1
EN

Stack Overflow用户

发布于 2017-06-21 16:56:35

我不得不注释掉server.xml中的AccessLogValve,这样我的重写阀才能工作

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26932253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档