Я пытаюсь перенаправить старые URL-адреса сервлетов на новые с помощью UrlRewriteFilter 4.0.3. У меня есть куча рабочих правил, но одно с URL-адресом сервлета в <from></from> не работает.
Мое правило выглядит так:
<rule>
<from>/servlet/OldServlet\?old_parameter=&id=([0-9]+)$</from>
<to type="redirect">/servlet/NewServlet?new_parameter=&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-запроса.