我在embeded jetty服务器上运行了一个应用程序。我正在尝试添加一个写入来添加RewriteHandler,以便从我的Web应用程序的根目录(http:///www.example.com)重定向到(http:www.example.com/web)。 我添加了RewriteHandler,但是我被重定向到http://www.example.com/home.html(或者main.html,具体取决于用户是否已登录)。
我实际上想要被重定向到http://www.example.com/web/home.html。 我应该如何修改下面的代码,以便实现这一点:
ServletContextHandler servletHandler =
new ServletContextHandler(ServletContextHandler.SESSIONS);
ServletHolder jerseyServlet = servletHandler.addServlet(ServletContainer.class, "/*");
String staticPath = StartServer.class.getResource("/resources/www-static/").toExternalForm();
ResourceHandler resourceHandler = new ResourceHandler();
resourceHandler.setBaseResource(Resource.newResource(staticPath));
resourceHandler.setWelcomeFiles(new String[] { "home.html" });
ContextHandler staticHandler = new ContextHandler("/web");
staticHandler.setHandler(resourceHandler);
RewriteHandler rewriteHandler = new RewriteHandler();
rewriteHandler.setRewriteRequestURI(true);
rewriteHandler.setRewritePathInfo(false);
RewritePatternRule redirect = new RewritePatternRule();
redirect.setPattern("^/?$");
redirect.setReplacement("/web");
rewriteHandler.addRule(redirect);
rewriteHandler.setHandler(resourceHandler);
HandlerList handlers = new HandlerList();
handlers.setHandlers(new Handler[] { servletHandler, staticHandler, rewriteHandler });
jetty.setHandler(handlers);
答案 0 :(得分:0)
先放RewriteHandler
。
并且不要混用ServletContextHandler
和ResourceHandler
。
请参阅https://stackoverflow.com/a/28419106/775715和https://stackoverflow.com/a/34277268/775715