【问题标题】:Jetty RewriteHandler and contextHandler码头 RewriteHandler 和 contextHandler
【发布时间】:2017-04-01 06:59:20
【问题描述】:

我有一个在嵌入式码头服务器上运行的应用程序。我正在尝试添加写入以添加 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);

【问题讨论】:

    标签: url-rewriting url-redirection embedded-jetty


    【解决方案1】:

    RewriteHandler放在第一位。

    不要混用 ServletContextHandlerResourceHandler

    https://stackoverflow.com/a/28419106/775715https://stackoverflow.com/a/34277268/775715

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-01
      • 2017-01-03
      • 1970-01-01
      • 2011-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多