我正在尝试按照 Jetty 文档示例在嵌入式 Jetty 服务器中实现一个简单的重写规则。
我希望请求/admin/
重写为 /admin.html。目前,如果我请求/admin/
我得到一个 404 错误,/admin.html
但未找到。但是,如果我直接请求/admin.html
,它会起作用!
stackoverflow 上还有 2 个其他类似的帖子,但没有答案!
这是代码:
WebAppContext _ctx = new WebAppContext();
_ctx.setContextPath("/");
_ctx.setDefaultsDescriptor(JETTY_DEFAULTS_DESCRIPTOR);
_ctx.setParentLoaderPriority(true);
_ctx.setWar(getShadedWarUrl());
_ctx.setResourceBase(getShadedWarUrl());
RewriteHandler rewriter = new RewriteHandler();
rewriter.setRewritePathInfo(true);
rewriter.setRewriteRequestURI(true);
rewriter.setOriginalPathAttribute("requestedPath");
RewritePatternRule admin = new RewritePatternRule();
admin.setPattern("/admin/");
admin.setReplacement("/admin.html");
admin.setTerminating(true); // this will stop Jetty from chaining the rewrites
rewriter.addRule(admin);
_ctx.setHandler(rewriter);
HandlerCollection _handlerCollection = new HandlerCollection();
_handlerCollection.setHandlers(new Handler[] {_ctx});
server.setHandlers(_result);