WebアプリでのTomcat 7の末尾のスラッシュの問題


13

最近、Tomcatサーバーを6.xバージョンから最新の7.xバージョンにアップグレードしました。

助けを求めて、私は少しのトラブルを思いつきました。

MyAppを呼び出すアプリケーションがあります

tomcat6で、http://www.example.com/MyApp/page/アクセスすると、通常、必要な結果が得られます。

今、tomcat7で、同じURL(末尾のスラッシュを含む)にアクセスすると、「リソースは使用できません」というエラーが表示されます、tomcatは/ MyApp / page /がリクエスト名ではなくwebapp名全体であると考えているためですMyApp webappの下のページ。

それ以外の場合は「HTTPステータス405-リクエストメソッド 'GET'はサポートされていません」というエラーが表示されるため、URLの最後にスラッシュが必要です。 。

既存のwebappのパスの後のスラッシュがtomcatのように新しいwebappにリダイレクトされてtomcat6のようにリクエストを処理するだけではないことをtomcatに伝える方法を誰かが知っているなら、それは素晴らしいことです!


web.xmlマッピングされるデフォルトのサーブレットはあります/*か?それ以外の場合、tomcatはwelcome-file-listを使用します。通常、最初のパスセグメントのみがコンテキストルートとして解釈されます。したがって、webappが見つからないことは問題ではないようです。
マナ

最初のパスセグメントはコンテキストルートであり、実際に機能しますが、それを見つけますが、最初のパスの一部ではなく次のパス、すべてのパスでwebappを検索します。非デフォルトは..です

あなたの言っていることがよくわかりません。ごめんなさい。名前でwebappが設定されている場合MyApp、tomcatは残りのパスを使用してこのWebアプリケーションコンテキストを使用しますpage/。そうでない場合は、ROOTルックアップのフルパスを使用して、コンテキストを探します。
マナ

webappがMyAppを呼び出しており、example.com / MyApp が機能しているが、MyApp内でfooコンテンツを検索する代わりにexample.com/MyApp/fooにアクセスすると、「MyApp / foo /」を呼び出して検索しないwebappを検索するMyAppの下のコンテンツはfooを呼び出します..

2
これを試してください:stackoverflow.com/q/11055608/1031900

回答:


1

古代の質問ですが、最近Tomcat 8の終了スラッシュと戦いましたので、スラッシュの問題がTomcatユーザーの世界を悩ませ続けていることを知っています。:-)

実行される可能性があるのは、ルートコンテキストを読み込むときにTomcatがリダイレクトを処理する方法の変更です。バグ58660をチェックして、そこにある開発者の議論を読んでください。mapperContextRootRedirectEnabledContext要素の属性を変更して、デフォルトのマッパーをオフにする必要がある場合がありますconf/context.xml


0

welcome-file-listを確認してください。以下は推測です...

問題の本質は、Tomcatに/が表示されていることだと思います--いくつかのオプションがあります-ウェルカムファイルリストを反復処理します-何も存在しない場合-ディレクトリリストを表示します(有効になっている場合)

ここからが楽しみの始まりです...多くの人々は、支柱のようなものに* .doを使用したいと考えています。そこで彼らはindex.doをホームページにしたいのです。または、*。jspがJspServletにマップされるindex.jspも一般的です。

ここからが楽しくなります。ウェルカムファイルがindex.jsp、index.doであるとしましょう。

Tomcat(IIRC)が行っていることは、最初にウェルカムファイルリストを繰り返し処理して、その名前のリソースを探します。

次に、2番目のパスを実行して、一致するマッピングを探します。したがって、index.jspがウェルカムリストで指定され、*。jspがマップされている場合。次に、tomcatはindex.jspへの転送を試行し、404を取得します。

したがって、サーブレットマッピングとウェルカムファイルの重複があると思います。そして、そのサーブレットの動作はGETをサポートしていません。(したがって、405)


0

プロジェクトでv2.2の動的Webモジュールを使用している場合、WebContent内のweb.xml(eg:index.html)に少なくとも1つのファイル(空のhtmlファイルでも可)を明示的に作成する必要があります。


1
これはコメントです。答えではありません。今後、より多くのポイントを獲得したらコメントを検討してください。おかげで
フルボイェショポルヤル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.