我想拦截所有传入的请求,例如
http://subdomain.domain.org/path/to/resource
到
https://appengineid.appspot.com/path/to/resource
任何可能的/ path / to / resource
这可以通过app engine web.xml部署描述符实现吗? 当我搜索这个主题时,所有文档或问题/答案都涉及转换/翻译请求的/ path / to / resource部分而不是subdomain.domain.tld部分?
由于
问题编辑/更新:
以上两个网址都指向应用引擎应用的完全相同的实例。我不想在/ path / to / resource上进行URL模式匹配,因为这样会匹配"匹配"对两个网址的请求。我想在URL的域部分进行URL模式匹配,以便将对subdomain.domain.org的任何请求重定向到appengineid.appspot.com,然后,这样就不会遇到任何循环请求appengineid.appspot.com被重定向过滤器忽略,并由Web部署描述符的其余部分处理。
答案 0 :(得分:0)
似乎是过滤器可以解决您的问题。 您可以在web.xml中创建一个新过滤器,如下所示:
<filter>
<filter-name>yourFilterName</filter-name>
<filter-class>com.acme.filter.YourNewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>yourFilterName</filter-name>
<url-pattern>/path/to/resource/*</url-pattern>
</filter-mapping>
您的过滤器类将是这样的:
public class YourNewFilter extends MyGenericFilter implements Filter {
public void doFilter(final ServletRequest request,
final ServletResponse response,
FilterChain chain)
throws java.io.IOException, javax.servlet.ServletException {
ServletContext context= getServletContext();
req.getRequestURL().toString() // use this method to get the end of the URL
RequestDispatcher rd= context.getRequestDispatcher("https://appengineid.appspot.com/path/to/resource/" + end of the URL
);
rd.forward(request, response);
}
}
它会截取一个域中的所有请求并将其发送给另一个域。