答案 0 :(得分:27)
在Play 2.1中,您可以使用conf/application.conf
中的以下选项执行此操作:
application.context="/your/prefix"
从Play 2.4开始,此属性称为play.http.context
(取自Gman的评论)。
答案 1 :(得分:5)
我在play's discussion group询问他们帮助我实现了这个初始版本
我像这样创建一个PrefixedRequest
import play.api.mvc.RequestHeader
import play.api.Play.configuration
import play.api.Play.current
class PrefixedRequest(request: RequestHeader) extends RequestHeader {
def headers = request.headers
def queryString = request.queryString
// strip first part of path and uri if it matches http.path config
def path = ("^" + prefix).r.replaceFirstIn(request.path, "/")
def uri = ("^" + prefix).r.replaceFirstIn(request.uri, "/")
def method = request.method
def remoteAddress = request.remoteAddress
lazy val prefix = {
val config = configuration.getString("http.path").getOrElse("")
if (config.endsWith("/")) config else config + "/"
}
}
object PrefixedRequest {
def apply(request: RequestHeader) = new PrefixedRequest(request)
}
然后我在Global.scala
中使用它import play.api.GlobalSettings
import play.api.mvc.RequestHeader
import play.api.mvc.Handler
object Global extends GlobalSettings {
override def onRouteRequest(request: RequestHeader): Option[Handler] = {
super.onRouteRequest(PrefixedRequest(request))
}
}
最后将其添加到application.conf
http.path=/prefix/
它似乎有效,但我不知道如何将这个前缀添加到反向路线中......任何人都可以在那个部位上捏造它吗?
-
一些有用的链接