【问题标题】:Tomcat URL Rewrite Filter isn't forwardingTomcat URL 重写过滤器不转发
【发布时间】:2012-07-11 10:13:40
【问题描述】:

我想转发所有匹配该模式的网址:

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

到:

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

这是在 tomcat 上,正在加载两个主要的 web 应用程序:“docs”和“alfresco”。
为简单起见,我们的旧旧应用程序(基于 LAMP)的所有 URL 都以 /docs 作为路径的第一部分,与新应用程序相同。我转发到 /alfresco 的原因是因为我开发了一个 webscript 来将旧 URL 解析为新 URL 并执行另一个重定向回 /docs,但这与这个问题无关。

新系统已经加载了URLRewriteFilter,但缺少以下需要放入webapps/docs/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>

我在尝试访问 http://localhost:8080/docs/view.php?fDocumentId=12345 之类的内容时遇到 404 错误

【问题讨论】:

    标签: tomcat url-rewriting


    【解决方案1】:

    您的&lt;from&gt;&lt;to&gt; 都不正确。

    首先,您的&lt;from&gt; 需要与已经是/docs 的当前上下文(即webapp)相关,所以您需要这样:

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

    其次,您的&lt;to&gt; 也必须与当前上下文相关,除非您指定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#fromhttp://urlrewritefilter.googlecode.com/svn/trunk/src/doc/manual/4.0/index.html#to 的 url-rewrite 文档中明确说明了这两个警告(包括后者的示例)。

    【讨论】:

      猜你喜欢
      • 2016-02-28
      • 2013-03-16
      • 2011-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-09
      • 2011-05-28
      • 2013-02-26
      相关资源
      最近更新 更多