我正在尝试重写 servlet 的 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
现在不由 servlet 处理。
此外,如果直接调用,/r?z=asdf
也可以工作。
我已将完整代码粘贴在这里:http://pastebin.com/Z1isNADg
结果我想要 RedirectRegexRule
而不是 RewriteRegexRule
。
我是一名优秀的程序员,十分优秀!