2017-01-04 15 views
4

Angular2アプリをtomcat8に配備しようとすると奇妙な問題に直面しています。Angular2 AppをTomcat8に配備 - ルーティングがうまくいかないようです

最初の文脈: - 私はAngular Cliを使用してビルドプロセスをアシストします。 - アプリケーションはサーバーと完全にローカルで動作します。ng serve - ng buildはすべてのprod ressourcesでdist/dirを作成します - アプリケーションをTomcatに適切にデプロイするためのWARを作成するgulpタスクを作成しました。 - 戦争は、Tomcatのwebappsにdirectoy

マイアプリURIは、そのようなものであるに展開されます。https:\ www.myexample.com \ myappの

\ホームURIが完璧に働いています。 Angular2ルーティングを使用しようとすると問題が発生します。たとえば https:\ www.myexample.com \ myapp \ myrouteのようになります。

トムキャットは、それが新しいWebアプリケーションのディレクトリがあると思うとhttps行う任意の転送になりません。\ www.myexample.com \ myappの\は

index.htmlを私はいくつか見てきましたが、ポスト行動のこの種について話すが、これまでのところ;私は解決策を見ていない。

tomcat8でangle2のアプリケーションを正しく実行するために、この問題をどのように克服することができますか?

ありがとうございます。

+2

を増やしてみてください' RouterModule.foRoot(真useHash)を参照してください。この方法で動作する場合、サーバーはHTML5 pushStateをサポートするように構成する必要があります。 –

+0

これを私の日を節約する答えとして追加してください。@GünterZöchbauer – aorfevre

+0

shussonsの答えが彼を受け入れる自由を感じるのに役立ちます。 –

答えて

3

ディレクトリまたはファイルが存在しない限り、index.htmlのURLを書き換える必要があります。

Tomcatの設定は、次にrewrite.configファイルに以下のようなものを追加書き換えバルブhttps://tomcat.apache.org/tomcat-8.0-doc/rewrite.html

を使用します

# If dir or asset exists go to it 
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR] 
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d 
RewriteRule^- [L] 
# Rewrite all other urls to use index.html 
RewriteRule^/index.html 
+0

rewrite.configはどこに置く必要がありますか? – Superbyte

+0

このサーバーサイドをJava Controllerで実行する方法はありますか?私は同様の問題があると思うが、my-appはng serveからうまく動作するが、戦争でそれをバンドルすると、/ homeや/ inboxのようなルートが含まれているとブラウザの更新が止まる。私は、ルートが関与している場合は、ブラウザをリフレッシュして404を取得します。アプリでクリックするとルーティングがうまく動作します。ありがとう – user2748659

3

は、すべてのサーバーで動作#を使用してURLにRouterModule.forRoot(useHash: true)スイッチを追加します。

HTML5 pushState(角度の既定値)を使用するには、サーバーをサポートするようにサーバーを設定する必要があります。 `:両方のスタイルの比較のために

https://angular.io/docs/ts/latest/guide/router.html#!#browser-url-styles

関連する問題