3

パターンに一致するすべての URL を転送したい:

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

に:

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

これは tomcat 上にあり、「docs」と「alfresco」という 2 つの主要な Web アプリケーションがロードされています。
簡単にするために、古いレガシー アプリケーション (LAMP ベース) には、新しいアプリケーションと同じように、パスの最初の部分として /docs を含むすべての URL がありました。/alfresco に転送する理由は、古い URL を新しい URL に解析し、/docs へのリダイレクトをさらに実行するために開発した Web スクリプトのためですが、これはこの質問には関係ありません。

新しいシステムにはすでにURLRewriteFilterがロードされていますが、webapps/docs/WEB-INF/web.xml に配置する必要がある Google コード サイト (私が追加したもの) に記載されている次の特定のコードが欠けていました。

<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

4

1 に答える 1

1

あなた<from>もあなた<to>も間違っています。

まず、<from>すでに である現在のコンテキスト (つまり webapp) に対して相対的である必要があるため、次の/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" ... />

これらの警告はどちらも、http://urlrewritefilter.googlecode.com/svn/trunk/src/doc/manual/4.0/index.html#from および http://urlrewritefilter の URL 書き換えドキュメントに明確に記載されていることに注意しください。 googlecode.com/svn/trunk/src/doc/manual/4.0/index.html#to (後者の例を含む)。

于 2012-07-11T18:19:27.717 に答える