我需要在 ServletFilter 中重写 URL,以便将“foo.domain.com”重写为“foo.domain.com/foo”。我正在使用 Jetty,它有一种方便的修改请求的方法:只需将请求转换为 Jetty Request 对象,你就会得到一堆允许你修改它的设置器。这是我的代码(不起作用):
String subdom = Util.getSubDomain(req);
org.eclipse.jetty.server.Request jettyReq = (Request) req;
String oldUri = jettyReq.getRequestURI();
String newUri = "/" + subdom + oldUri;
jettyReq.setRequestURI(newUri);
我的目的是从位于 /webapps/root/foo 的 /foo 目录中提供文件。
我猜我还需要调用 setContextPath()、setPathInfo()、setURI()、setServletPath() 之类的东西,谁知道还有什么。
什么神奇的组合使它看起来像原来的请求是针对 /foo 的?
编辑:澄清一下,我说代码不起作用的原因是文件仍然从 /webapps/root 提供,而不是 /webapps/root/foo。