cloudbees + lift application =破碎的导航

时间:2013-04-30 00:40:46

标签: scala tomcat web-applications lift

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

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

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

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

2 个答案:

答案 0 :(得分:1)

好吧,我已经明白了这一点,所以我将发表自己的答案,以供其他人的未来参考。

问题

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看到网址“/ demos”并看到我的“demos”文件夹,并假设我的网址是错误的,添加了斜杠。

解决方案

通过一些重新排列解决问题。首先,将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文件。

答案 1 :(得分:0)

你可以尝试在本地运行战争(在tomcat中),看看是否会发生这种情况?在cloudbees上似乎没有任何特定于tomcat的内容