gpt4 book ai didi

java - Jetty URL 重写/重定向去除查询字符串

转载 作者:行者123 更新时间:2023-12-01 13:13:04 25 4
gpt4 key购买 nike

我目前正在与 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com