2016-08-26 2 views
0

私はアプリケーションをPlay 2.3.xから2.4.xに移行しています。静的ルーティングからの移行に伴い、私は明らかに一部の資産にリダイレクトする機能を失います。このアプリケーションは、URLに追加できるテナント機能(localhost:9000/Tenant /)を実装しています。これにより、適切なテナントがバックグラウンドで設定されたログインページにリダイレクトされます。デフォルトのテナント(開発目的)は、urlに付随しない(localhost:9000 /)を使用してアクセスできます。Playフレームワークアセットルーティングはバージョン2.4.xでは機能しません

問題がテナントを設定した後、私は次のように使用してindex.htmlを/アプリにリダイレクトすることになりました:リダイレクト作品

return redirect(query != null ? "app/index.html?" + query : "app/index.html"); 

残念ながら、私はGET」アクションが要求のために が見つかりません」を取得/app/index.html ''手動でリダイレクトしてもアセットにアクセスできません。

アプリケーションのroutesファイルでは、次のルートエントリがこのリダイレクトを正しく処理するはずですが、間違っていますか?

# Map static resources from the /public/app folder to the /app URL path 
GET /app/*file controllers.Assets.at(path="/public/app", file) 

ログには、残念ながら以外は特に何も言っていない:人々は、コンソール上でエラーを受信したことを[Play Framework Routes not working]私は他の例で見た

**** [TRACE] Http request received by netty: DefaultHttpRequest(chunked: false) 
****   GET /app/index.html HTTP/1.1 
****   Host: localhost:9000 
****   Connection: keep-alive 
****   Upgrade-Insecure-Requests: 1 
****   User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 
****   Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 
****   Accept-Encoding: gzip, deflate, sdch 
****   Accept-Language: en-US,en;q=0.8,de;q=0.6 
****   Cookie: PLAY_SESSION="f2069c9ef539f8d3fe9d07327a3c65bd4a45cb79-MANDT=0B7ABE451F3441A5AB93799DBC8621EF" [play.core.server.netty.PlayDefaultUpstreamHandler] 
**** [TRACE] Serving this request with: <function1> [play.core.server.netty.PlayDefaultUpstreamHandler] 
**** [TRACE] Invoking action with request: GET /app/index.html [play.api.mvc.Action] 

をルートが試されていると言います。

これは2.3.xでは機能しましたが、2.4.xではこれ以上機能しませんでした。私は何か不足していますか?

+1

リダイレクト時に問題が発生していませんか? (つまり、ブラウザの/app/index.htmlに直接アクセスすると動作します) – Salem

+0

'GET/app/*ファイルコントローラ.Assets.at(パス="/public "ファイル)' これを試すことができますか? 'リダイレクト'が1行if文を処理できるかどうかチェックしましたか? –

+0

@Salem:問題は、リダイレクトするときだけでなく、index.htmlを呼び出すたびに発生しているようです。 – Ben

答えて

0

私は問題を解決できます。

私が移行している間、私はSbtWeb使用のために適切に移行ガイドに従っていないことに気づきました。

https://www.playframework.com/documentation/2.5.x/AssetsOverview#Reverse-routing-and-fingerprinting-for-public-assets

設定全体にenablePlugins(...、SbtWeb)がありませんでした。私はsbt-gzipなどが見つかりませんでした。正しくガイドに従って、新しく作成した新鮮なプロジェクトと設定を比較してください。後者は、移行時に簡単に監視できる標準構成を探す際に多くの助けとなりました。

関連する問題