Frage

Ich habe meine Play-App ausgeführt:

http://localhost:9000

Nginx leitet es als Proxy an diese URL weiter:

http://localhost/Demo/

Ich habe allerdings ein Problem mit statischen Assets.Zum Beispiel dieses Asset in einer HTML-Vorlage

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

wird

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

und führt offensichtlich dazu, dass sie nicht gefunden wird.Wenn ich es so ändere (hinzufügen /Demo vor der URL):

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

Es wird jetzt korrekt zu dieser URL weitergeleitet:

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

Meine Frage ist:Wie kann ich das hinzufügen? /Demo auf alle meine statischen Assets, ohne sie hart in meine Vorlagen einzubinden?Ich bevorzuge es, dieses Problem mithilfe des Play-Routings zu lösen und die an der Nginx-Konferenz vorgenommenen Änderungen zu begrenzen.

Ich habe versucht, ein URL-Präfix hinzuzufügen application.conf so was

application.context="/Demo"

Aber das betraf alle URLs, nicht nur die statischen, also keine Lösung.Irgendwelche Gedanken?

Mein Stapel:Spielenrahmen 2.2.1 / scala 2.10.3 / java 8 64bit / nginx 1.4.3 / ubuntu 13.10 64bit

AKTUALISIEREN:LÖSUNG Vielen Dank an @biesior für die Bereitstellung der Java-Version, ich habe sie in Scala konvertiert:

package core

import controllers.routes

object Assets {

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

}
War es hilfreich?

Lösung

Überschreiben Sie einfach den Pfad mit der eigenen Implementierung von Assets (z. B.In utils Paket):

package utils;
import controllers.routes;

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

in Vorlagen:

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

Funktioniert das Zielprojekt andererseits auch im Unterverzeichnis?Wenn nicht, ist es einfach einfacher, Subdomains zu verwenden. Dies ist auch mit localhost möglich. Konfigurieren Sie einfach Ihren Nginx für dieses zu verwendende Projekt, z. B.: http://demo.loc stattdessen od http://localhost/Demo und füge dies hinzu 'Domain' zu deinem hosts Datei

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top