【发布时间】:2013-12-28 20:57:32
【问题描述】:
Play 框架中是否有默认的 catch all fallback 路由?如果是这样,我如何在我的路由文件中配置它?目前,有些网址我不希望用户调用它们,即使他们调用,我也不希望出现该错误页面,而是希望它们转到我的 Web 应用程序的登录页面!有没有办法在路由配置文件中做到这一点?
【问题讨论】:
标签: scala playframework routes playframework-2.1
Play 框架中是否有默认的 catch all fallback 路由?如果是这样,我如何在我的路由文件中配置它?目前,有些网址我不希望用户调用它们,即使他们调用,我也不希望出现该错误页面,而是希望它们转到我的 Web 应用程序的登录页面!有没有办法在路由配置文件中做到这一点?
【问题讨论】:
标签: scala playframework routes playframework-2.1
只需在routes 文件的末尾定义一个匹配任何路径的路由。不要忘记为您的资产定义特定的路线,例如:
GET / controllers.Application.index
GET /some/path controllers.Application.someHandler
...
# End of file
GET /favicon.ico controllers.Assets.at(path="/public", file="img/favicon.ico")
GET /$file<(css|img|js|partials)/.*> controllers.Assets.at(path="/public", file)
GET /$path<.*> controllers.Application.catchall(path)
任何不被先前规则匹配的 URL 都将被这个规则匹配。
【讨论】:
$id<regex> 定义了一个名称为“id”且必须匹配regex 的动态部件。这里,$path<.*> 是一个动态路径,它的名字是“path”并且匹配任何字符串。
当您想对路径执行某些操作(即在您的自定义操作中手动解决它)时,捕获所有路由是有意义的,否则在您的 Global object 中使用常见的 onHandlerNotFound 并将请求重定向到您想要的任何位置就足够了。
【讨论】: