1

scalajs-react's router 的文档中,@japgolly警告该库的用户,以“/”斜杠开头的 URL 需要额外的服务器配置

为了允许没有 的漂亮 URL #,到目前为止,我尝试在 Playroutes文件中编写一个包罗万象的路由,如下所示:

# Home page
GET     /          com.xyz.controllers.Application.index(path: String = "")

...
# Catch-all route
GET     /*path     com.xyz.controllers.Application.index(path: String)

与匹配的索引路径Application.scala

def index(path: String = "") = Action {
  Ok(views.html.index("Title"))
}

最后是RouterConfigDsl在前端声明使用的路由:

def create = Router(BaseUrl.until_#, RouterConfigDsl[Loc].buildConfig { dsl =>
    import dsl._

    ( emptyRule
    | staticRoute(root, DashboardLoc)                   ~> render(filler("Dashboard"))
    | staticRoute("purchase-orders", PurchaseOrdersLoc) ~> render(filler("Purchase Orders"))
    | staticRoute("dashboard", DashboardLoc)            ~> render(filler("Dashboard"))
    | staticRoute("items", ItemsLoc)                    ~> render(ItemGallery())
    | staticRoute("customers", CustomersLoc)            ~> render(filler("Customers"))
    | staticRoute("sales-orders", SalesOrdersLoc)       ~> render(filler("Sales Orders"))
    | staticRoute("preorders", PreordersLoc)            ~> render(filler("Pre-orders"))
    ).notFound(redirectToPage(DashboardLoc)(Redirect.Replace))
     .setTitle(l => s"XYZ | ${l.name}")
}.renderWith(layout))

在本地运行,我有应用程序自动重定向到DashboardLocatlocalhost:9000/dashboard并且其他静态路由在 Web 应用程序中单击它们时工作,但在重新加载时失败。

4

1 回答 1

1

事实证明,问题毕竟是使用BaseUrl.until#而不是BaseUrl.fromWindowOrigin_/. 现在所有路线都按预期工作。

于 2016-12-28T14:19:49.360 回答