0

「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から提供されているためです。

4

2 に答える 2

1

自分の質問に答える: 行方不明だった

jettyReq.setServletPath(newUri); 

それを追加すると、すべてが機能します。

于 2012-12-12T21:39:01.183 に答える
1

書き換えハンドラーを使用するだけで、あなたがやろうとしていることをサポートしています:

http://wiki.eclipse.org/Jetty/Feature/Rewrite_Handler

于 2012-12-12T18:07:14.770 に答える