1

<c:url>ビューでリンクを生成するために(または<spring:url>) jsp タグを使用している MV webapp があります。

私の webapp は現在、コンテキスト パス "/" でデプロイされているため、アドレスで到達可能http://mydomainです。

今、このアプリを contextpath でデプロイしたいと思い/appます。

アプリにアクセスするための新しい URL は になりましたhttp://mydomain/app

アプリがデプロイされている contextPath を Web ユーザーが見たり、URL をきれいに保ったりするのは好きではありません。現在、RewriteRule を使用して、Tomcat に到達する前に Apache を通過する各リクエストに /app を追加しています。

したがって、ユーザーは参照できhttp://mydomain、rewrite ルールは contextpath の下にデプロイされた正しい webapp にリクエストを転送します/app

私が今抱えている問題は<c:url>、ビューを使用すると、contextPath を含む HTML にページ リンクが生成されることです。書き換えルールで隠そうとしています。

したがって、/appコンテキストの下で webapp をデプロイした後、HTML には次のようなリンクが含まれますhttp://mydomain/app/other/careers.htmlhttp://mydomain/other/careers.html

を使用してすべてのページを変更せずにこれを修正する方法はあります<c:url>か?

taglib の目的は、まさに contextPath を管理して、ページにハードコードされないようにすることです。しかし、私の問題は、書き換えルール エンジンを使用すると、HTML ページでこのコンテキスト パスが不要になることです。これは、書き換えルール自体で処理するようなものだからです。

4

1 に答える 1

1

http://tuckey.org/urlrewrite/で UrlRewriteFilter を確認してください。

このプロジェクトを使用すると、インバウンド リンクとアウトバウンド リンクの両方を操作できます後者c:urlは、URL の構築方法を決定するために舞台裏で行われる呼び出しの結果を変更することによって行われます。

現在のバージョンのドキュメントは少しややこしいようですが<outboud-rule>( https://cdn.rawgit.com/paultuckey/urlrewritefilter/master/src/doc/manual/4.0/index.html#outbound-rule ) 要素はすべてのページリンクを自動的に変更するために探しているもの。

すべてのリンクにのみ使用c:urlしている場合は、単一のページを変更する必要なく、UrlRewriteFilter を追加するだけで済みます。

全体的な設定に応じて、UrlRewriteFilter は着信書き換え (発信リンクとは別に構成されます) も処理できるため、mod_rewrite は必要ない場合があります。

これが役立つことを願っています。

于 2012-11-02T17:16:48.787 に答える