Próbuję zaimplementować prostą regułę przepisywania w osadzonym serwerze Jetty, zgodnie z przykładami dokumentacji Jetty.Rozwiązania wbudowanego osadzania nie działają poprawnie
Chcę, aby żądania do /admin/
przepisywano na /admin.html. W tej chwili, jeśli poproszę o numer /admin/
, pojawia się błąd 404 z nieznalezieniem /admin.html
. Ale jeśli zgłoszę się bezpośrednio, to zadziała /admin.html
!
Istnieją 2 inne podobne posty na stackoverflow, ale nie ma odpowiedzi na pytanie!
Oto kod:
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);
To bardzo pomocne! Dzięki! – Melissa