Scala/Play/Nginx:recurso estático roteamento
-
20-12-2019 - |
Pergunta
Eu tenho o meu Play o aplicativo executando:
http://localhost:9000
Nginx é proxy de passar para esta url:
http://localhost/Demo/
Eu tenho um problema com a estática ativos embora.Por exemplo, esse ativo no modelo html
<link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/main.css")">
vai
http://localhost/assets/stylesheets/main.css
e, obviamente, resulta em não sendo encontrado.Se eu mudar para este (adicionar /Demo
na frente da url):
<link rel="stylesheet" media="screen" href="/Demo@routes.Assets.at("stylesheets/main.css")">
será corretamente agora vá para esta url:
http://localhost/Demo/assets/stylesheets/main.css
A minha pergunta é:como posso adicionar este /Demo
a todos os meus processos estáticos, sem disco rígido codding-lo em meus modelos?Eu prefiro resolver isso usando o Jogo de roteamento e limitar as alterações feitas ao nginx conf.
Eu tentei adicionar um prefixo de url para application.conf
como este
application.context="/Demo"
mas que afetou todos os urls não só os estáticos, portanto, não uma solução.Quaisquer pensamentos?
Minha pilha:Jogar Quadro 2.2.1 / Scala 2.10.3 / Java 8 64bits / Nginx 1.4.3 / Ubuntu 13.10 64bit
ATUALIZAÇÃO:SOLUÇÃO Graças a @biesior para fornecer a versão do Java, eu converti para scala:
package core
import controllers.routes
object Assets {
def at(path: String): String = {
"/Demo" + routes.Assets.at(path)
}
}
Solução
Apenas substitua o caminho usando a própria implementação de ativos (ie.no utils
package):
package utils;
import controllers.routes;
public class MyAssets {
public static String at(String path){
return "/Demo"+ routes.Assets.at(path).toString();
}
}
nos modelos:
<img src='@utils.MyAssets.at("images/logo.png")' alt="">
Sobre o muito outro lado, será alvo do projeto também funcionam no subdiretório ?Se não é apenas mais fácil de usar subdomínios, é possível também com localhost, basta configurar o nginx para que o projeto usa o ie.: http://demo.loc
em vez od http://localhost/Demo
e adicionar este 'domínio' para o seu hosts
arquivo