Как выполнить перезапись URL в Websphere, когда приложение Angular размещено в подкаталоге - PullRequest
0 голосов
/ 07 февраля 2020

Мы используем Websphere для размещения ряда приложений для нас:

  • У нас есть API, который размещен на root, написанном в Java
  • Мы у нас есть Angular приложение, размещенное в / admin
  • У нас есть еще одно Angular приложение, размещенное в / marketing

Меня беспокоит глубокая связь . Если пользователь находится по адресу / marketing / products / 1 и он обновляет sh свой браузер или делится ссылкой, мне нужно, чтобы сервер отправил этот маршрут в правильное приложение Angular, чтобы он мог быть сгенерирован правильно.

В более простой настройке, где приложение Angular находится на root, я бы использовал веб-файл приложения Java. xml, чтобы перенаправить трафик c в "/". Но в моем текущем сценарии мне нужно, чтобы traffi c для маркетингового сайта был go для "/ marketing", а не только для "/". Точно так же, как глубокая ссылка с сайта администратора должна быть go на "/admin".

. Кроме того, базовые URL-адреса для этих Angular приложений могут быть изменены, и мы также планируем добавить дополнительные Angular сайтов на этом же сервере. Поэтому я действительно ищу решение, которое может работать динамически и перенаправлять сервер на первый «кусок» в URL, а не на соответствующие каталоги c.

Есть идеи? (И, пожалуйста, извините и исправьте любые заблуждения, которые я продемонстрировал выше - в настоящее время я очень мало знаю о WebSphere)

1 Ответ

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

Я вижу несколько возможных путей продвижения вперед.

  1. Вы все еще можете использовать директиву error-page в web.xml, но в своем приложении укажите URL-адрес сервлета, который может выполнять проверку вручную и выполните перенаправление в зависимости от ситуации. То, как список корневых контекстов предоставляется вашему приложению, зависит от того, как оно упаковано, но это можно сделать с помощью файлов, переменных среды или записей JNDI в server.xml.
  2. Если URL-адреса могут быть изменены, приложения Angular можно изменить, чтобы использовать HashLocationStrategy в своих маршрутизаторах, что могло бы обойти страницу ошибки. Маловероятно, что это так, но я поставлю это здесь, чтобы разобраться с этим.
  3. Вы могли бы рассмотреть разбиение каждого Angular приложения на его собственный файл .war и настройку контекст root в элементе webApplication в server.xml. Тогда перенаправление на / в web.xml будет работать, так как это / относительно контекста- root.
...