Scala / Play / Nginx:静的リソースルーティング
-
20-12-2019 - |
質問
私のプレイアプリを実行しています:
http://localhost:9000
.
nginxはこのURLにプロキシを渡す:
http://localhost/Demo/
.
静的資産に問題があります。たとえば、HTMLテンプレートのこの資産
<link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/main.css")">
.
が
になるhttp://localhost/assets/stylesheets/main.css
.
と明らかに見つからないことがあります。これに変更した場合(URLの前に/Demo
を追加):
<link rel="stylesheet" media="screen" href="/Demo@routes.Assets.at("stylesheets/main.css")">
.
これでこのURLに正しく移動します。
http://localhost/Demo/assets/stylesheets/main.css
.
私の質問は、この/Demo
を私のテンプレートにハードコーディングせずにすべての静的資産に追加することができますか?私はPlayのルーティングとNginx Confに行われた変更を制限してこれを解決することをお勧めします。
この
のようにapplication.conf
にURLプレフィックスを追加しようとしました
application.context="/Demo"
.
しかし、それはすべてのURLに静的なものだけでなく、解決策ではありません。考えられる?
私のスタック: プレイフレームワーク2.2.1 / スカラ2.10.3 / Java 8 64bit / NGINX 1.4.3 / Ubuntu 13.10 64bit
アップデート:解決策 Javaバージョンを提供するための@Biesiorに感謝します、それをScalaに変換しました:
package core
import controllers.routes
object Assets {
def at(path: String): String = {
"/Demo" + routes.Assets.at(path)
}
}
. 解決
自身の資産の実装を使用してパスを超えて(つまり、utils
パッケージ):
package utils;
import controllers.routes;
public class MyAssets {
public static String at(String path){
return "/Demo"+ routes.Assets.at(path).toString();
}
}
.
テンプレート:
<img src='@utils.MyAssets.at("images/logo.png")' alt="">
.
他の手で、プロジェクトをターゲットにしてもサブディレクトリで機能しますか?サブドメインを使用する方が簡単な場合は、LOCALHOSTでも可能です。そのプロジェクトに対してNginxをIE .: http://demo.loc
を使用するだけです。:http://localhost/Demo
およびこの 'ドメイン' をhosts
ファイルに追加します。P>
所属していません StackOverflow