Jettyのマニュアルの例に従って、組み込みのJettyサーバに簡単な書き換えルールを実装しようとしています。Embedded Jettyの書き換えが正しく動作しない
/admin/
へのリクエストを/admin.htmlに書きたいと思っています。 現時点で私が/admin/
を要求した場合、/admin.html
で404エラーが発生します。 しかし、私が/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);
になります!ありがとう! – Melissa