Question

Mon application Play est en cours d'exécution :

http://localhost:9000

Nginx est un proxy qui le transmet à cette URL :

http://localhost/Demo/

J'ai cependant un problème avec les actifs statiques.Par exemple, cet actif dans un modèle HTML

<link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/main.css")">

va

http://localhost/assets/stylesheets/main.css

et cela aboutit évidemment à ne pas être trouvé.Si je le change en ceci (ajouter /Demo devant l'url) :

<link rel="stylesheet" media="screen" href="/Demo@routes.Assets.at("stylesheets/main.css")">

il ira désormais correctement à cette URL :

http://localhost/Demo/assets/stylesheets/main.css

Ma question est:comment puis-je ajouter ceci /Demo à tous mes actifs statiques sans les coder en dur dans mes modèles ?Je préfère résoudre ce problème en utilisant le routage de Play et limiter les modifications apportées à la configuration nginx.

J'ai essayé d'ajouter un préfixe d'URL dans application.conf comme ça

application.context="/Demo"

mais cela a affecté toutes les URL, pas seulement les URL statiques, donc pas une solution.Des pensées?

Ma pile :Play Framework 2.2.1 / scala 2.10.3 / java 8 64bit / nginx 1.4.3 / ubuntu 13.10 64bit

MISE À JOUR:SOLUTION Merci à @biesior d'avoir fourni la version Java, je l'ai convertie en scala :

package core

import controllers.routes

object Assets {

    def at(path: String): String = {
        "/Demo" + routes.Assets.at(path)
    }

}
Était-ce utile?

La solution

Remplacez simplement le chemin en utilisant votre propre implémentation d'actifs (c.-à-d.dans utils emballer):

package utils;
import controllers.routes;

public class MyAssets {
    public static String at(String path){
        return "/Demo"+ routes.Assets.at(path).toString();
    }
}

dans les modèles :

<img src='@utils.MyAssets.at("images/logo.png")' alt="">

D'un autre côté, le projet cible fonctionnera-t-il également dans le sous-répertoire ?Sinon, il est simplement plus facile d'utiliser des sous-domaines, c'est également possible avec localhost, configurez simplement votre nginx pour que ce projet l'utilise, c'est-à-dire : http://demo.loc à la place, oh http://localhost/Demo et ajoute ceci 'domaine' à ton hosts déposer

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top