Scala Lift - Url重写到文件夹中的页面

时间:2012-02-10 11:15:20

标签: scala url-rewriting lift

我有以下重写规则:

LiftRules.statelessRewrite.prepend(NamedPF("AppRewrite") {

        case RewriteRequest(

            ParsePath(List("room", room, user), _, _, _), _, _) =>

                RewriteResponse(List("room"),

                    Map("room" -> room, "user" -> user)

                )

})

允许我这样做

http://xx.xx.xx.xx/room/[room_id]/[user_id]

加载的html页面位于webapp根目录中(例如webapp / room.html)

我要做的是在房间之后添加另一个参数,所以我可以

http://xx.xx.xx.xx/room/[page_id]/[room_id]/[user_id]

但是,不是在webapp根目录中加载room.html,而是使用page_id在名为pages的子文件夹中加载页面。

所以我可以

http://xx.xx.xx.xx/room/join/[room_id]/[user_id]

哪个会加载

webapp/pages/room/join.html

提前感谢您的帮助,非常感谢:)

2 个答案:

答案 0 :(得分:0)

如果您只是询问如何将/room/join/[room_id]/[user_id]重写为/pages/room/join.html,那么请按照您开始使用的相同网址重写模式进行操作。

... // (in the same statlessRewrite.prepend block)
case RewriteRequest( 
  ParsePath( List("room", "join", roomId, userId), _, _, _), _, _) =>
    RewriteResponse(List("pages", "room", "join"), 
      Map("roomId" -> roomId, "userId" -> userId)
    )

您可能还需要在网站地图中添加“/pages/room/join.html”。

答案 1 :(得分:0)

您应该只需为重写添加一个新案例:

LiftRules.statelessRewrite.prepend(NamedPF("AppRewrite") {
        case RewriteRequest(
            ParsePath(List("room", room, user), _, _, _), _, _) =>
                RewriteResponse(List("room"),
                    Map("room" -> room, "user" -> user)
                )
        case RewriteRequest(
            ParsePath(List("room", page, room, user), _, _, _), _, _) =>
                RewriteResponse(List("pages", "room", page),
                    Map("room" -> room, "user" -> user)
                )
})