0

UrlRewriteFilter 4.0.3 を使用して、古いサーブレットの URL を新しいものにリダイレクトしようとしています。たくさんの作業ルールがありますが、サーブレットの URL が含まれているルールが機能し<from></from>ていません。

私のルールは次のようになります。

<rule>
    <from>/servlet/OldServlet\?old_parameter=&amp;id=([0-9]+)$</from>
    <to type="redirect">/servlet/NewServlet?new_parameter=&amp;document_id=$1</to>
</rule>

「.+」で「から」の部分を切り出そうとしました。「?」を削除することで、ルールを機能させることができました。私のURLとルールから。サーブレットの URL が定義されたルールに一致していないようです。レガシーな理由から、OldServlet はまだ web.xml にマップされています。

編集:

org.tuckey.web.filters.urlrewrite.UrlRewriter DEBUG: processing request for /servlet/OldServlet

URL は「?」から切り取られます。

編集2:

UrlRewriter.java:

public String getPathWithinApplication(HttpServletRequest request) {
    String requestUri = request.getRequestURI();
    ...

UrlRewriteFilter は完全な URL を返さないメソッドを使用しているようです。

http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.html#getRequestURI ()

HTTP 要求の最初の行のプロトコル名からクエリ文字列まで、この要求の URL の一部を返します。

4

1 に答える 1

3

デフォルトでは、クエリ文字列は追加されません。use-query-string="true"urlrewrite に属性を追加した後、動作し始めました。

<urlrewrite use-query-string="true">
于 2012-08-07T10:02:10.990 に答える