Я пытаюсь переписать URL для сервлета. URL корректно переписывается, но после этого контекст не совпадает. Есть идеи, как заставить это работать?
RewriteHandler rewriteHandler = new RewriteHandler();
rewriteHandler.setRewriteRequestURI(true);
rewriteHandler.setRewritePathInfo(true);
rewriteHandler.setOriginalPathAttribute("requestedPath");
RewriteRegexRule rewriteRegexRule = new RewriteRegexRule();
rewriteRegexRule.setRegex("/r/([^/]*).*");
rewriteRegexRule.setReplacement("/r?z=$1");
rewriteHandler.addRule(rewriteRegexRule);
ContextHandlerCollection contextHandlerCollection = new ContextHandlerCollection();
Context servletContext = new Context(contextHandlerCollection, "/");
servletContext.addServlet(new ServletHolder(new RedirectServlet()), "/r");
Таким образом, в основном /r/asdf
переписывается на /r?z=asdf
.
Однако переписанный /r?z=asdf
теперь не обрабатывается сервлетом.
Кроме того, /r?z=asdf
работает, если вызывается напрямую.
Я вставил полный код здесь: http://pastebin.com/Z1isNADg