我需要在ServletFilter中进行URL重写,以便" foo.domain.com"被重写为" foo.domain.com/foo"。我使用Jetty,它有一种方便的方法来修改请求:只需将请求转换为Jetty Request对象,你就会得到一堆允许你修改它的setter。这是我的代码(不起作用):
String subdom = Util.getSubDomain(req);
org.eclipse.jetty.server.Request jettyReq = (Request) req;
String oldUri = jettyReq.getRequestURI();
String newUri = "/" + subdom + oldUri;
jettyReq.setRequestURI(newUri);
我的目的是从/ foo目录中提供文件,该目录位于/ webapps / root / foo。
我猜我还需要调用setContextPath(),setPathInfo(),setURI(),setServletPath()之类的东西,以及谁知道还有什么。
什么样的神奇组合会使原来的请求看起来像/ foo?
编辑:澄清一下,我说代码无法正常工作的原因是文件仍在/ webapps / root中提供,而不是/ webapps / root / foo。< / p>
答案 0 :(得分:1)
只需使用重写处理程序,我们就支持你要做的事情:
答案 1 :(得分:1)
回答我自己的问题:我错过了
jettyReq.setServletPath(newUri);
添加它,一切正常。