Domanda

Ho la mia app Play in esecuzione:

http://localhost:9000
.

nginx è proxy che lo passa a questo URL:

http://localhost/Demo/
.

Ho un problema con le risorse statiche però. Ad esempio, questo asset in template HTML

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

sta andando a

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

e ovviamente si traduce in non trovato. Se lo cambio su questo (Aggiungi /Demo davanti all'URL):

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

Verrà ora correttamente a questo URL:

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

La mia domanda è: come posso aggiungere questo /Demo a tutti i miei beni statici senza cadendolo duro nei miei modelli? Preferisco risolvere questo utilizzando il routing e il limite di riproduzione modificati a Nginx Conf.

Ho provato ad aggiungere un prefisso URL in application.conf come questo

application.context="/Demo"
.

Ma ciò ha colpito tutti gli URL non solo quelli statici, quindi non una soluzione. Qualche idea?

La mia pila: Play Framework 2.2.1 / Scala 2.10.3 / Java 8 64 bit / Nginx 1.4.3 / Ubuntu 13.10 64 bit

Aggiornamento: soluzione Grazie a @biesior per fornire la versione Java, l'ho convertito in Scala:

package core

import controllers.routes

object Assets {

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

}
.

È stato utile?

Soluzione

Basta overwitare il percorso utilizzando la propria implementazione di attività (cioè nel pacchetto utils):

package utils;
import controllers.routes;

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

in Modelli:

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

Dall'altra parte, il progetto di destinazione funziona anche nella sottodirectory?In caso contrario, è solo un sottodominio più facile da usare, è possibile anche con localhost, basta configurare il tuo nginx per quel progetto da utilizzare IE.: http://demo.loc invece od http://localhost/Demo e aggiungi questo 'dominio' al tuo file hosts

.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top