1

サーブレットの URL を書き直そうとしています。URL は正しく書き換えられますが、その後のコンテキストは一致しません。これを機能させる方法はありますか?

RewriteHandler rewriteHandler = new RewriteHandler();
rewriteHandler.setRewriteRequestURI(true);
rewriteHandler.setRewritePathInfo(true);
rewriteHandler.setOriginalPathAttribute("requestedPath");

RewriteRegexRule rewriteRegexRule = new RewriteRegexRule();
rewriteRegexRule.setRegex("/r/([^/]*).*");
rewriteRegexRule.setReplacement("/r?z=$1");
rewriteHandler.addRule(rewriteRegexRule);

ContextHandlerCollection contextHandlerCollection = new ContextHandlerCollection();
Context servletContext = new Context(contextHandlerCollection, "/");

servletContext.addServlet(new ServletHolder(new RedirectServlet()), "/r");

したがって、基本的/r/asdfには に書き換えられ/r?z=asdfます。

ただし、書き換えられ/r?z=asdfたものはサーブレットによって処理されなくなりました。

また、/r?z=asdf直接呼び出された場合にも機能します。

ここに完全なコードを貼り付けました: http://pastebin.com/Z1isNADg

4

1 に答える 1

1

RedirectRegexRuleの代わりに私が欲しかったことがわかりましたRewriteRegexRule

于 2010-05-16T21:55:45.487 に答える