2010-05-13 9 views
1

J'essaie de réécrire une URL pour une servlet. L'URL est réécrite correctement, mais le contexte ne correspond pas après cela. Une idée de comment faire fonctionner ça?Jetty RewriteHandler et 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"); 

Donc, fondamentalement /r/asdf est réécrite à /r?z=asdf.

Cependant, le /r?z=asdf réécrit n'est plus traité par le servlet.

En outre, /r?z=asdf fonctionne si appelé directement.

J'ai collé le code complet ici: http://pastebin.com/Z1isNADg

Répondre

1

Je voulais savoir Transforme RedirectRegexRule au lieu de RewriteRegexRule.