「foo.domain.com」が「foo.domain.com/foo」に書き換えられるように、ServletFilter で URL を書き換える必要があります。私はリクエストを変更する便利な方法を持つ 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/fooではなく/webapps/rootから提供されているためです。