2010-05-13 3 views
1

Я пытаюсь переписать URL-адрес сервлета. URL-адрес правильно переписывается, но после этого контекст не совпадает. Любая идея, как заставить это работать?Jetty RewriteHandler и RewriteRegexRule

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

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

Смежные вопросы