Play Framework возвращает 404 с play.http.context и косой чертой - PullRequest
4 голосов
/ 11 февраля 2020

У меня есть приложение Play Framework, которое обслуживает SPA. Файл маршрутов содержит следующие маршруты:

GET      /            controllers.Home.index
GET      /index.html  controllers.Home.index

# /api/* routes

GET      /*file       controllers.Assets.at(file)

controllers.Home.index обслуживает индекс SPA после выполнения процедур SSO.

Когда я запускаю приложение без какой-либо дополнительной настройки, при посещении localhost:3000 и localhost:3000/, действие index в Home контроллере вызывается, как и ожидалось.

Проблемы начинаются, когда я настраиваю play.http.context:

  • Когда установлено /my-app, запросы к localhost:3000/my-app успешны; на localhost:3000/my-app/ возврат 404.
  • При значении /my-app/ запросы на localhost:3000/my-app возврат 404; localhost:3000/my-app/ успешно.

Есть ли способ настроить Play таким образом, чтобы запросы на оба URL выполнялись с controllers.Home.index?

Ответы [ 2 ]

0 голосов
/ 20 февраля 2020

Используйте оба URL. С и без висячего листа sh.

0 голосов
/ 16 февраля 2020

Я искал то же самое, но нет хорошего ответа. Для Play / Akka это 2 разных URL,

Вариант 1) - определить его 2x

GET     /about                     controllers.HomeController.about
GET     /about/                     controllers.HomeController.about

Вариант 2) перенаправить один URL на другой

GET /a                              controllers.HomeController.about
GET /a/                             controllers.Default.redirect(to = "/a")

Вариант 3) более продвинутые способы, но я его не проверял

https://doc.akka.io/docs/akka-http/current/routing-dsl/directives/path-directives/ignoreTrailingSlash.html

https://doc.akka.io/docs/akka-http/current/routing-dsl/directives/path-directives/redirectToNoTrailingSlashIfPresent.html

https://github.com/akka/akka-http/issues/880

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...