2010-05-13 2 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를 원 밝혀졌습니다.