我的直接建议是编写一个servlet过滤器(或Spring
HandlerInterceptor),该过滤器将从请求中获取主机名,将其添加到原始请求的路径之前,然后转发该请求。
例如,给定所请求的URL
http://goo.gl/my/path,过滤器将转发至
/goo.gl/my/path。然后,Spring
MVC映射将有所帮助。蚂蚁风格的通配符语法(例如
"**/my/path")或路径变量风格(例如,
"{requestHost}/my/path"在此处可能会有所帮助)。另外,过滤器可以设置包含请求的主机的自定义标头或请求属性,但这可能不太灵活。
不过,我不确定问题第二部分的意思。
这是一个工作片段:
@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { if (request.getRequestURL().toString().contains(shortenerDomain) && !request.getRequestURI().startsWith(SHORT_URI_PREFIX)) { request.getRequestDispatcher(SHORT_URI_PREFIX + request.getRequestURI()) .forward(request, response); return false; } else { return true; }}


