Как настроить обработчики 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, Хотя вы никогда не можете использовать такой параметр запроса, хорошо иметь в виду, что он будет переписан.

Другие вопросы по тегам