Как настроить обработчики Undertow для поддержки правильного переписывания для закладок SPA?
Я пытаюсь настроить JBoss EAP 7 (через Undertow) для правильной перезаписи любых URL-адресов SPA обратно в SPA index.html
используя обработчики Undertow. К сожалению, мой API находится по адресу /api
поэтому мне нужно разрешить прохождение любых запросов, начиная с которых /api
,
Вот моя текущая конфигурация (снято с другого ответа SO):
not equals(%R, '/my-app') and
not equals(%R, '/my-app/') and
not equals(%R, '/my-app/index.html') and
not path-prefix('/my-app/api') and
not regex('/my-app/.*\.js') and
regex('/my-app/.+') -> rewrite('/my-app/index.html')
К сожалению, это, похоже, ничего не переписывает. Как я могу обновить эту конфигурацию, чтобы переопределять свойства URL?
1 ответ
Для начала попробуйте эту конфигурацию в WEB-INF/undertow-handlers.conf
:
path-prefix('/api') -> done
path-suffix('.js') -> done
path-prefix('/') -> rewrite('/')
Вам не нужно /my-app
префикс для любых правил, так как они уже запущены в контексте вашего приложения.
Однако вам может понадобиться добавить другие предикаты, чтобы предотвратить перезапись других ресурсов, таких как таблицы стилей, значки избранного, исходные карты и т. Д. Полный список предикатов и обработчиков может быть полезен для создания более конкретных, целевых правил.
Пожалуйста, обратите внимание, path-suffix
по-прежнему приходится путь, как /app?thing.js
, Хотя вы никогда не можете использовать такой параметр запроса, хорошо иметь в виду, что он будет переписан.