質問

私のプレイアプリを実行しています:

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>

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top