1

アプリケーションは、コンテキスト パス "/environame/appname" の Tomcat6 にデプロイされます。

<Context
...
        path="/environame/appname"
...
</Context>

しかし、次の URL を使用してアプリケーションにアクセスできません。

http://localhost:8080/環境名/アプリ名

「environame」と「appname」の間にスラッシュの代わりにアンダースコアを使用する必要があります。

http://localhost:8080/environame_appname

Tomcat 5 の動作は異なります。
Tomcat 5 の場合、URL にアンダースコアはありません。

http://localhost:8080/環境名/アプリ名

"environame" と "appname" の間でアンダースコアの代わりにスラッシュを使用してアプリケーションにアクセスするには、アプリケーションまたは Tomcat 6 の構成で何を変更する必要がありますか?

アップデート:

pathこの Web アプリケーションのコンテキスト パス。処理する適切な Web アプリケーションを選択するために、各要求 URI の先頭と照合されます。特定のホスト内のすべてのコンテキスト パスは一意である必要があります。空の文字列 ("") のコンテキスト パスを指定すると、このホストのデフォルトの Web アプリケーションが定義され、他のコンテキストに割り当てられていないすべての要求が処理されます。

このフィールドの値は、.xml コンテキスト ファイルまたは docBase に使用されるファイル名から推測されるため、server.xml でコンテキストを静的に定義する場合を除き、設定しないでください。

http://tomcat.apache.org/tomcat-5.5-doc/config/context.html

コンテキスト xml ファイルを $CATALINA_HOME/conf/Catalina/localhost/environame_appname.xml ファイルに保存します。Tomcat 5.0.28 は Context 要素の path 属性を使用します。
Tomcat 6 はコンテキスト xml ファイルの名前を使用します。
xontext xml ファイルの名前の代わりにパス属性を使用するように構成を変更することは可能ですか?

回答:
バグbug#46713があります

パス属性がコンテキスト xml のコンテキスト タグ内に設定されている場合、それは無視されます。代わりに、パスは "/" + に設定されます。'/' を含むパスであっても、'/' を '#' に置き換えることでファイル名にエンコードできるのは良いことですが、既存のパス属性が単純に無視されるのは非常に混乱を招きます。

そのため、コンテキスト xml ファイルの名前をenvironname#appname.xml に変更するだけです。

4

1 に答える 1

0

昔 (Tomcat 4 だと思います)、environname_appname.war という名前の war アーカイブを展開することができ、Tomcat はそれを URL 環境名/アプリ名/ 経由で利用できるようにしました...これがまだ機能するかどうかはわかりません (そしてまだテストする時間がありません)。Tomcat は、スラッシュとアンダースコアで置き換えます。

目標を達成する別の方法は、apache と mod_proxy、mod_proxy_ajp (または mod_proxy_html)、および mod_rewrite を使用することです。次に、Tomcat で 2 つのアプリケーション (app01 と app02) を定義し、/app01 (resp /app02) へのリクエストを tomcat に転送するプロキシ ルールと、/env01/app へのリクエストを /app01 と /env02 に書き換える書き換えルールを定義します。 /app02 から /app02 へ。

于 2012-04-06T13:08:53.167 に答える