我的游戏应用程序正在运行:

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 conf所做的更改。

我已经尝试将url前缀添加到 application.conf 像这样

application.context="/Demo"

但这影响了所有的url,不仅静态的,所以不是一个解决方案。有什么想法吗?

我的堆栈:游戏框架2.2.1 / 斯卡拉2.10.3 / Java8 64位 / Nginx1.4.3 / Ubuntu13.10 64位

更新资料:解决方案 感谢@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以使该项目使用ie即可。: http://demo.loc 相反od http://localhost/Demo 并添加此 '域名' 致你的 hosts 档案

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top