1

個人の Web サイトのフレームワークとして Lift を使用してきましたが、サーバーを自分のコンピューターから移動するために、Cloudbees を使用するようになりました。アプリをファイルとしてクラウドにデプロイし、.war閲覧を開始しました。

編集- どうやらこれは Cloudbees とは何の関係もありません。Tomcatの問題です。

ローカルでは、私のアプリがページとして機能localhost:8008/demosdemos.htmlます。しかし、Cloudbees では、[URL]/demos自動的に 404 にリダイレクトされ、404 が返されます。直接[URL]/demos/アクセスすると、問題なく動作するようです。[URL]/demos.html

ページに明示的な「.html」サフィックスを付けないようにしたいと考えています。これを機能させて、ローカルで実行したときと同じように動作させるにはどうすればよいですか?

4

2 に答える 2

1

さて、私はこれを理解したので、他の人々の将来の参考のために私自身の答えを投稿するつもりです.

問題

Cloudbees は Tomcat を使用します (Jetty ではありません。Jetty は を介し​​て sbt Web プラグインで使用されますcontainer:start)。Tomcat は Where does Tomcat append / to directory paths? で暗示されているように Tomcat は、/ディレクトリと見なされるパスに a を追加します。

のようなアプリ構造で

src/main/webapp
 - demos.html
 - demos
   - some-demo.html

そして、以下を含むリフト サイトマップ定義

Menu.i("Demos") / "demos" submenus (
  Menu.i("Some Demo") / "demos" / "some-demo"
)

Tomcat は URL "/demos" と私の "demos" フォルダーを見て、私の URL が間違っていると想定して、末尾にスラッシュを追加していました。

ソリューション

少し再配置して問題を回避します。まず、demos.htmldemos フォルダーに移動し、名前を に変更しindex.htmlます。

src/main/webapp
 - demos
   - index.html (formerly demos.html)
   - some-demo.html

この変更を反映するようにサイトマップを調整します

Menu.i("Demos") / "demos" / "index" submenus (...)
                            ^ added an extra path step

これで、自動生成されたサイトマップが直接ポイントするように/demos/なり、Tomcat は喜んで demos/index.html ファイルをその場所に提供します。

于 2013-04-30T01:47:01.480 に答える