1

我一直在使用 Lift 作为个人网站的框架,为了将服务器从我的计算机上移开,我求助于 Cloudbees。我将我的应用程序作为.war文件部署到云端并开始浏览。

编辑- 显然这与 Cloudbees 无关。这是一个Tomcat的问题。

在本地,我的应用程序将用作localhost:8008/demos页面demos.html。但是在 Cloudbees 上,[URL]/demos自动重定向到[URL]/demos/并给出 404。如果我[URL]/demos.html直接访问,它似乎工作正常。

我想避免在我的页面上使用明确的“.html”后缀。我怎样才能让它工作,以便事情像我在本地运行时那样运行?

4

2 回答 2

1

好吧,我已经弄清楚了,所以我将发布我自己的答案以供其他人将来参考。

问题

Cloudbees 使用 Tomcat(不是 Jetty,这是通过 sbt 网络插件使用的container:start)。正如Tomcat在哪里将/附加到目录路径所暗示的那样?Tomcat 会将 a 添加/到它认为是目录的路径中。

使用类似的应用程序结构

src/main/webapp
 - demos.html
 - demos
   - some-demo.html

还有一个电梯站点地图定义,其中包括

Menu.i("Demos") / "demos" submenus (
  Menu.i("Some Demo") / "demos" / "some-demo"
)

Tomcat 看到了 url “/demos” 并看到了我的 “demos” 文件夹,并假设我的 url 是一个错误,添加了斜杠。

解决方案

通过一些重新安排来解决这个问题。首先,demos.html进入 demos 文件夹并将其重命名为index.html.

src/main/webapp
 - demos
   - index.html (formerly demos.html)
   - some-demo.html

调整站点地图以反映这一变化

Menu.i("Demos") / "demos" / "index" submenus (...)
                            ^ added an extra path step

现在我的自动生成的站点地图将直接指向/demos/并且 Tomcat 很乐意在那个地方提供我的 demos/index.html 文件。

于 2013-04-30T01:47:01.480 回答
0

您可以尝试在本地(在 tomcat 中)运行战争,看看是否会发生这种情况?这似乎与 cloudbees 上的 tomcat 无关

于 2013-04-30T01:07:40.717 回答