java - Jetty RewriteHandler 和 RewriteRegexRule

标签 java regex jetty mod-rewrite embedded-jetty

我正在尝试重写 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

关于java - Jetty RewriteHandler 和 RewriteRegexRule,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2824560/

相关文章:

java - 如何为方法添加返回语句 - 初学者

java - Spring MVC Java 配置

Java + Selenium : How to know if WebElement is clickable in a way other than isDisplayed, isEnabled 和 findElement?

mysql - SQL 正则表达式中的特殊字符 - 将单词边界与特殊字符匹配

python - 使用正则表达式查找与特定字符串匹配的文本

c# - 正则表达式或不匹配

java - DefaultTableModel 突出显示单击的单元格

java - Camel Jetty 中的自定义基本身份验证

eclipse - 使用 Gradle+Eclipse 在 Jetty 上启用热部署的最佳方式

java - WebAppContext 将参数传递给 servlet 构造函数