2016-04-02 57 views
1

我想要的URL 本地主机/文章/文章标题为“执行”的URL localhost/getArticle?文章标题。tomcat重写,配置读取,但不能正常工作

我想我已经配置了我的阀正确的,因为我看到这在日志中:

03-Apr-2016 01:11:38.206 FINE [Catalina-startStop-1] org.apache.catalina.valves.rewrite.RewriteValve.startInternal Read configuration from /usr/local/apache-tomcat-8.0.33/conf/Catalina/localhost/rewrite.config 
03-Apr-2016 01:11:38.208 FINE [Catalina-startStop-1] org.apache.catalina.valves.rewrite.RewriteValve.parse Add rule with pattern ^article/(.*) and substitution getArticle?$1 
03-Apr-2016 01:11:38.775 FINE [localhost-startStop-1] org.apache.catalina.valves.rewrite.RewriteValve.startInternal Read configuration from: /WEB-INF/rewrite.config 
03-Apr-2016 01:11:38.775 FINE [localhost-startStop-1] org.apache.catalina.valves.rewrite.RewriteValve.parse Add rule with pattern ^article/(.*) and substitution getArticle?$1 

我actived它在server.xml和context.xml中。该文件rewrite.config是因为在日志中读取,你可以看到这一点:

Add rule with pattern ^article/(.*) and substitution getArticle?$1 

这是我rewrite.config的内容:

#To make it work, active the Rewrite Valve is ../META-INF/context.xml 
RewriteRule ^article/(.*) getArticle?$1 [L] 

但是,当我去http://localhost/article/article-title,我这在日志中:

27.0.0.1 - - [03/Apr/2016:01:12:01 +0200] "GET /article/article-title HTTP/1.1" 404 1036 

我怎样才能确保重写被激活?

谢谢你的时间。

+0

我忘了说我用的是tomcat 8.0.33。 – kowalsky

回答

0

要在RewriteRule中匹配的路径是相对于当前容器。所以重写规则应为:

RewriteRule ^/article-(.*) getArticle?$1 [L]