我想转发与该模式匹配的所有网址:
http://localhost:8080/docs/view.php?fDocumentId=([0-9]+)
到:
http://localhost:8080/alfresco/service/org/docs/redirect/document/properties/$1
这是在tomcat上,并且正在加载两个主要的webapp:“docs”& “露天”。
为简单起见,我们的旧遗留应用程序(基于LAMP)将所有带有/ docs的URL作为路径的第一部分,与新应用程序相同。我转发到/ alfresco的原因是因为我开发了一个webscript来将旧URL解析为一个新的URL并执行另一个重定向回到/ docs,但这与这个问题无关。
新系统已加载URLRewriteFilter,但缺少以下需要放入webapps / docs / WEB-INF / web的Google代码网站(我已添加)中提及的特定代码。 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>
在尝试去http://localhost:8080/docs/view.php?fDocumentId=12345
答案 0 :(得分:1)
您的<from>
和<to>
都不正确。
首先,您的<from>
需要相对于已经/docs
的当前上下文(即webapp),所以您想要这样:
<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" ... />
请注意,这两个警告都在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的url-rewrite文档中明确说明(包括后者的示例)。