具有多个域的Web应用程序,指向父项的子文件夹

时间:2017-10-19 16:30:19

标签: spring tomcat deployment dns

我正在使用Spring Boot开发一个应用程序,它可以在一个域下运行,比如说;

parentdomain.com

用户在登录后从 parentdomain.com/admin 输入其内容。这个内容在子文件夹中被处理并公开访问,比如说;

parentdomain.com/user-one-content
parentdomain.com/user-two-content and so on.

我需要将每个用户的域指向他的文件夹,例如:

userone.com should be equivalent to parentdomain.com/user-one-content

导航应保留在userone.com网站上。

userone.com/first-page应该打开parentdomain.com/user-one-content/first-page。

现在,应用程序已安装在PWS(Pivotal Web Services)上,但是他们的路由系统并未提供此方法的解决方案,多个域指向父级的子文件夹。

我如何归档此功能?

2 个答案:

答案 0 :(得分:0)

我会单独留下Spring Boot并放在它前面的Web服务器中。你可以安装Apache或Nginx吗?域/子域重新路由在两者中都是开箱即用的。

答案 1 :(得分:0)

最后,我可以归档它,感谢gspatel

的建议

使用PWS或其他IaaS云提供商的生根系统,我可以将每个域根植到整个应用程序。

实现HandleInterceptor的preHandle方法,我检查请求是否来自我的域(示例中为parentdomain.com)。或者,如果它来自网站的某个域,该应用正在投放(示例中为userone.com)。在这种情况下,我控制不访问parentdomain.com或其他用户的内容,将请求转发到用户主页(示例中为user-one-content)。

这是我的preHadle实现的摘录:

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

      ...

      String URI = request.getRequestURI();
      String rootURI = "/" + idweb + "/";

      if(URI.equals("/") || !URI.startsWith(rootURI)){ 
          URI = rootURI;

          RequestDispatcher requestDispatcher = request.getRequestDispatcher(request.getContextPath() + URI);
          requestDispatcher.forward(request, response);

        }

    return true;
}