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

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

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

我想避免页面上显式的“ .html”后缀。如何在本地运行时使它工作,以使其表现出与众不同的效果?

最佳答案

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

问题

Cloudbees使用Tomcat(不是Jetty,而是通过container:start与sbt Web插件一起使用的东西)。如Where does Tomcat append / to directory paths?所示,Tomcat会将/附加到它认为是目录的路径中。

使用类似的应用程序结构

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


调整SiteMap以反映此更改

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


现在,我自动生成的站点地图将直接指向/demos/,Tomcat会在那个位置愉快地提供我的demos / index.html文件。

07-24 13:14