Pregunta

Tengo mi aplicación Play ejecutándose:

http://localhost:9000

Nginx es un proxy que lo pasa a esta URL:

http://localhost/Demo/

Sin embargo, tengo un problema con los activos estáticos.Por ejemplo, este activo en la plantilla html

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

va a

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

y obviamente resulta en que no lo encuentren.Si lo cambio a esto (agregar /Demo delante de la URL):

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

Ahora irá correctamente a esta URL:

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

Mi pregunta es:¿Cómo puedo agregar esto? /Demo a todos mis activos estáticos sin codificarlos en mis plantillas?Prefiero resolver esto usando el enrutamiento de Play y limitar los cambios realizados en nginx conf.

Intenté agregar un prefijo de URL en application.conf como esto

application.context="/Demo"

pero eso afectó a todas las URL, no solo a las estáticas, por lo que no es una solución.¿Alguna idea?

Mi pila:Play Framework 2.2.1 / Scala 2.10.3 / java 8 64bit / nginx 1.4.3 / ubuntu 13.10 64bit

ACTUALIZAR:SOLUCIÓN Gracias a @biesior por proporcionar la versión de Java, la convertí a Scala:

package core

import controllers.routes

object Assets {

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

}
¿Fue útil?

Solución

Simplemente sobrescriba la ruta utilizando su propia implementación de activos (es decir,en utils paquete):

package utils;
import controllers.routes;

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

en plantillas:

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

Por otro lado, ¿el proyecto de destino también funcionará en el subdirectorio?Si no, es más fácil usar subdominios, también es posible con localhost, simplemente configure su nginx para que lo use ese proyecto, es decir: http://demo.loc en lugar de extraño http://localhost/Demo y agrega esto 'dominio' para usted hosts archivo

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top