我目前正在与 Jettys 作斗争 rewrite mechanisms 。基本上我想要 URL
http://localhost:8080/membership/payment?id=5000
替换为 http://localhost:8080/#/membership/payment?id=5000
我当前的方法如下:
RewriteHandler rewrite = new RewriteHandler();
rewrite.setRewriteRequestURI(true);
rewrite.setRewritePathInfo(true);
rewrite.setOriginalPathAttribute("requestedPath");
RewriteRegexRule replace = new RewriteRegexRule();
replace.setRegex("/membership/(.*)");
replace.setReplacement("/#/membership/$1");
rewrite.addRule(replace);
总的来说,这是有效的,唯一缺少的是要传递到新位置的查询字符串 (?id=5000)。
如何保留新位置的查询字符串?
最佳答案
好的,我找到了解决方案:
private static ContextHandlerCollection prepareContexts() {
MovedContextHandler handler = new MovedContextHandler();
handler.setContextPath("/membership");
handler.setNewContextURL("/#/membership");
handler.setPermanent(true);
handler.setDiscardPathInfo(false);
handler.setDiscardQuery(false);
WebAppContext webAppContext = new WebAppContext();
webAppContext.setServer(server);
webAppContext.setContextPath("/");
webAppContext.setWar("src/main/webapp");
ContextHandlerCollection contexts = new ContextHandlerCollection();
contexts.setHandlers(new Handler[] { handler, webAppContext });
return contexts;
}
之后必须分配上下文:
server.setHandler(prepareContexts();
关于java - Jetty URL 重写/重定向去除查询字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22689631/