我正在尝试弄清楚如何从我的 web 应用程序重定向到另一台服务器,保留所有路径和 GET 变量。
例如
www.myapp.com/foo
foo.com
www.myapp.com/foo/bar
foo.com/bar
www.myapp.com/foo?bar=1
foo.com?bar=1
我理想情况下只是想使用类似的东西
<mvc:view-controller path="/foo/**" view-name="redirect:http://foo.com**" />
最佳答案
我最终使用了过滤器。
从基础结构上来说,这似乎是最简单的方法
过滤器实现:
public class DomainRedirectFilter extends OncePerRequestFilter {
private String destinationDomain;
private String sourceServletPath;
@Override
protected void doFilterInternal(HttpServletRequest request,
HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {
String path = request.getServletPath();
path = StringUtils.replace(path, getSourceServletPath(), "");
if (request.getQueryString() != null) {
path += '?' + request.getQueryString();
}
response.setHeader( "Location", getDestinationDomain() + path );
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
response.setHeader( "Connection", "close" );
}
web.xml
<filter>
<filter-name>fooDomainRedirectFilter</filter-name>
<filter-class>com.abc.mvc.util.DomainRedirectFilter</filter-class>
<init-param>
<param-name>destinationDomain</param-name>
<param-value>http://foo.abc.com</param-value>
</init-param>
<init-param>
<param-name>sourceServletPath</param-name>
<param-value>/foo</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>fooDomainRedirectFilter</filter-name>
<url-pattern>/foo/*</url-pattern>
<url-pattern>/foo</url-pattern>
</filter-mapping>
我需要添加 2 个 url 模式以允许
/foo
/foo?id=1
/foo/bar
/foo/bar?id=1
关于java - spring mvc 将路径和所有子级重定向到另一个域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10568808/