如何在Play 2.0中路由URL,以便它们对结束斜杠无动于衷

Jac*_*ter 12 regex scala routes playframework playframework-2.0

我可以在一行中捕获以下两条路线吗?

GET     /game                    controllers.Main.app.gamelist
GET     /game/                   controllers.Main.app.gamelist
Run Code Online (Sandbox Code Playgroud)

Fra*_*anz 6

目前不支持此功能,并且已将故障单提交给问题跟踪器.还有一个关于Google网上论坛的讨论(包括一些解决方法).

希望这将很快以一些聪明的方式实施.


Gel*_*Luo 5

如果您使用的是playframework 1.x,那么它是:

GET /game/? controllers.Main.app.gamelist
Run Code Online (Sandbox Code Playgroud)


小智 5

虽然目前似乎不支持,但可以通过覆盖Global.scala中的onRouteRequest来实现.

我们这样做:

import play.api._
import play.api.mvc.{Handler, RequestHeader, Action, Controller}


object TrailingSlashRedirector extends Controller {
  def redirect(request: RequestHeader) = Action {
    Redirect(request.path.dropRight(1), request.queryString, 301)
  }
}

object Global extends GlobalSettings {

  override def onRouteRequest(request: RequestHeader): Option[Handler] = {

    val EndsWithASlash= """/(.*)/$""".r

    request.path match {  
      case EndsWithASlash(_) => Some(TrailingSlashRedirector.redirect(request))
      case _ => super.onRouteRequest(request)
    }

  }  

}
Run Code Online (Sandbox Code Playgroud)