Tomcat的URL重写过滤器不转发(Tomcat URL Rewrite Filter isn&#

2019-09-19 08:15发布

我想转发模式匹配的所有URL:

http://localhost:8080/docs/view.php?fDocumentId=([0-9]+)

至:

http://localhost:8080/alfresco/service/org/docs/redirect/document/properties/$1

这是在Tomcat,并有被装载两个主要web应用:“文档”和“露天”。
为了简便起见,我们的老传统应用(基于LAMP)曾与/文档作为路径,同为新应用程序的第一部分中的所有URL。 我转发到/露天的原因是因为我已经发展到旧的URL解析到一个新的URL并执行另一个重定向到/文档一webscript的,但是这无关紧要了这个问题。

新系统已经具备了URLRewriteFilter加载,但缺少一个需要投入的webapps /文档/ WEB-INF / web.xml中对谷歌代码网站(我加的)提到了以下具体的代码:

<filter>
    <filter-name>UrlRewriteFilter</filter-name>
    <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>UrlRewriteFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>

然后,我添加了以下规则在同一个目录web.xml中urlrewrite.xml:

<rule>
   <from>^/docs/view.php?fDocumentId=([0-9]+)</from>
   <to>/alfresco/service/org/docs/redirect/document/properties/$1</to>
</rule>

我收到404的试图去喜欢的东西时http://localhost:8080/docs/view.php?fDocumentId=12345

Answer 1:

无论您<from>和您的<to>是不正确的。

首先,你的<from>必须是相对于当前上下文(即Web应用程序),这已经是/docs ,所以你要这样的:

<from>^/view.php?fDocumentId=([0-9]+)</from>

其次,你的<to>必须是相对于当前背景下,太,除非你指定的context属性你的情况下被定义为跨情境。 所以,你需要这样的:

<to context="/alfresco">/service/gov/inteldocs/redirect/document/properties/$1</to>

还需要这在您的META-INF/context.xml文件:

<Context ... crossContext="true" ... />

请注意,这两个需要注意的地方是在URL重写文件在明确提出http://urlrewritefilter.googlecode.com/svn/trunk/src/doc/manual/4.0/index.html#from和HTTP:// urlrewritefilter。 googlecode.com/svn/trunk/src/doc/manual/4.0/index.html#to (包括后者的例子)。



文章来源: Tomcat URL Rewrite Filter isn't forwarding