Jetty RewriteHandler и RewriteRegexRule - PullRequest
1 голос
/ 13 мая 2010

Я пытаюсь переписать 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

1 Ответ

1 голос
/ 17 мая 2010

Оказывается, я хотел RedirectRegexRule вместо RewriteRegexRule.

...