我正在使用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)上,但是他们的路由系统并未提供此方法的解决方案,多个域指向父级的子文件夹。
我如何归档此功能?
答案 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;
}