Правило UrlRewriteFilter не работает с URL-адресом сервлета

Я пытаюсь перенаправить старые URL-адреса сервлетов на новые с помощью UrlRewriteFilter 4.0.3. У меня есть куча рабочих правил, но одно с 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()

Возвращает часть URL-адреса этого запроса от имени протокола до строки запроса в первой строке HTTP-запроса.


person anssias    schedule 07.08.2012    source источник


Ответы (1)


Строка запроса не добавляется по умолчанию. Начал работать после того, как я добавил атрибут use-query-string="true" в urlrewrite.

<urlrewrite use-query-string="true">
person anssias    schedule 07.08.2012