2014-02-23 32 views
1

這下面是我的應用程序佈局:遊戲框架:如何路由到一個HTML頁面中的公用文件夾

myapp 
    + app 
    + conf 
    + modules 
    | + mymodule 
    |  + app 
    |  + conf 
    |  + public 
    |   + swagger-ui 
    |    + css 
    |    + images 
    |    + index.html 
    + public 
    + ... 

我想加載index.html與URL http://localhost/mymodule/swagger-ui ...這裏下面是modules/mymodule/conf/mymodule.routes我的路線:

... 

# Map static resources from the /public folder to the /assets URL path 
GET /assets/*file  controllers.mymodule.Assets.at(path = "/public", file) 
GET /swagger-ui   controllers.mymodule.Assets.at(path = "/public/swagger-ui", file = "index.html") 

上述工作的路線......除了通過index.html引用的資源(圖片,CSS)都沒有發現。如果我修改的路線是這樣的...

... 

GET /assets/*file  controllers.mymodule.Assets.at(path = "/public", file) 
GET /swagger-ui/*file controllers.mymodule.Assets.at(path = "/public/swagger-ui", file) 

...然後按預期工作和引用的資源也被加載中...但當然我需要提供一個網址像http://localhost/mymodule/swagger-ui/index.html

有什麼建議嗎?

+0

如何在index.html文件中引用CSS/Images? – Peter

+0

它們被引用像這樣:images/logo.png,css/screen.css等。 – j3d

+0

什麼是404錯誤URL示例? –

回答

4

我試了一下詹姆斯建議–,在我看來是更有意義的解決方案......

GET  /swagger-ui   controllers.apidocs.Assets.at(path = "/public/swagger-ui", file = "index.html") 
GET  /swagger-ui/*file controllers.apidocs.Assets.at(path = "/public/swagger-ui", file) 

...但實際上它只是部分工作,即http://localhost/mymodule/swagger-ui被正確地路由到http://localhost/mymodule/swagger-ui/index.html,但其中包含的所有相對路徑(例如css/highlight.default.css)被路由到http://localhost/mymodule/css/*而不是http://localhost/mymodule/swagger-ui/css/*。也就是說,使其工作,我不得不修改這樣的路線:如預期

  1. http://localhost/mymodule/swagger-ui被路由到http://localhost/mymodule/swagger-ui/index.html
  2. http://localhost/mymodule/swagger-ui/index.html不會被路由在所有上述工作

    GET  /swagger-ui   controllers.apidocs.Assets.at(path = "/public/swagger-ui", file = "index.html") 
    GET  /*file    controllers.apidocs.Assets.at(path = "/public/swagger-ui", file) 
    

    的路線,隱藏index.html給最終用戶

  3. 相對路徑在index.html被路由到http://localhost/mymodule/swagger-ui/css/*

我希望有幫助。

+0

你的第一條路線和第二條路線有什麼區別? – SobiborTreblinka

+0

你是什麼意思? – j3d

+0

「這就是說,爲了使它工作,我不得不修改這樣的路線:」 我以爲我錯過了一個字符,但我做了上述兩個路線文件示例的字符串比較,它們是相同的。有什麼不同? – SobiborTreblinka

4

嘗試:

GET /swagger-ui   controllers.Assets.at(path = "/public/swagger-ui", file = "index.html") 
GET /swagger-ui/*file controllers.Assets.at(path = "/public/swagger-ui", file) 

(訂購事宜)

+0

不......與以前相同的結果。值得一提的是,這些路線是一個遊戲子項目的一部分 - 請參閱我的更新後的帖子。 – j3d

1

我第一次喜歡一個重定向這樣

GET  /swagger-ui   controllers.Default.redirect(to = "swagger-ui/") 
GET  /swagger-ui/   controllers.apidocs.Assets.at(path = "/public/swagger-ui", file = "index.html") 
GET  /swagger-ui/*file    controllers.apidocs.Assets.at(path = "/public/swagger-ui", file) 

如果您瀏覽到/招搖的UI會重定向到招搖的UI /所以JS,CSS和圖像的下一個電話將在正確的路徑

+0

非常有趣......非常感謝你:-) – j3d