2017-10-19 75 views
0

我正在开发一个Spring Boot的应用程序,该应用程序在域下运行,假设;具有多个域的Web应用程序指向父文件夹的子文件夹

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)上,但它们的路由系统并未提供此方法的解决方案,其中多个域指向父文件夹的子文件夹。

如何归档此功能?

回答

0

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

+0

推荐Web服务器是Tomcat的,尽管它可以在其他的人,只要他们能够处理的Java Servlet的运行。 也许Apache或Nginx,可以与Tomcat结合使用。但似乎比PWS这样的服务更为复杂。 –

+0

然后,您应该使用HandlerInterceptor并在preHandle上,根据上述逻辑更改域和路径。对于您的应用程序,它将显示为正好位于正确的域和路径中。 – gspatel

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; 
} 
相关问题