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

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

IT小君   2022-09-15T08:33:41

我正在使用 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 服务)上,但他们的路由系统没有为这种方法提供解决方案,多个域指向父域的子文件夹。

我怎样才能归档这个功能?

服务器费用不足...
评论(2)
IT小君

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

2022-09-15T08:33:41   回复
IT小君

最后我可以归档它,感谢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;
}
2022-09-15T08:33:41   回复