В документации для маршрутизатора scalajs-react
, @japgolly cautions users of the library that starting URLs with '/' slashes requires additional server configuration.Довольно URL-адреса (без «#») на скайаз-реале. Приложение для воспроизведения
Чтобы разрешить довольно URL-адреса без #
, до сих пор я пытался написать кетчуп все пути в файле Play routes
как следующее:
# 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))
Запуск локально, у меня есть приложение для автоматического перенаправления на DashboardLoc
по адресу localhost:9000/dashboard
, а остальные статические маршруты работают при нажатии на них в веб-приложении, но при перезагрузке они не работают.