Вопрос

У меня запущено приложение Play:

http://localhost:9000

Nginx является прокси-сервером, передающим его по этому URL-адресу:

http://localhost/Demo/

Однако у меня проблема со статическими ресурсами.Например, этот ресурс в шаблоне html

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

собирается

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

и, очевидно, приводит к тому, что его не находят.Если я изменю это на это (добавлю /Demo перед URL):

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

теперь он будет правильно переходить на этот URL-адрес:

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

Мой вопрос:как мне это добавить /Demo ко всем моим статическим ресурсам без жесткого кодирования их в мои шаблоны?Я предпочитаю решать эту проблему с помощью маршрутизации Play и ограничивать изменения, вносимые в конфигурацию nginx.

Я попытался добавить префикс URL-адреса в application.conf так

application.context="/Demo"

но это повлияло на все URL-адреса, а не только на статические, так что это не решение.Есть предположения?

Мой стек:Play Framework 2.2.1 / Scala 2.10.3 / Java 8 64Bit / Nginx 1.4.3 / Ubuntu 13.10 64bit

ОБНОВЛЯТЬ:РЕШЕНИЕ Спасибо @biesior за предоставленную версию Java, я преобразовал ее в Scala:

package core

import controllers.routes

object Assets {

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

}
Это было полезно?

Решение

Просто перезапишите путь, используя собственную реализацию активов (т.в utils упаковка):

package utils;
import controllers.routes;

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

в шаблонах:

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

С другой стороны, будет ли целевой проект работать и в подкаталоге?Если нет, то проще использовать поддомены, это возможно и с localhost, просто настройте nginx для использования в этом проекте, т.е.: http://demo.loc вместо этого ОД http://localhost/Demo и добавь это 'домен' на ваш hosts файл

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top