1

J'essaie de configurer JBoss EAP 7 (via Undertow) pour réécrire correctement toutes les URL du SPA sur le index.html du SPA en utilisant des gestionnaires Undertow. Malheureusement, mon API se trouve au /api, donc je dois laisser passer toutes les demandes qui commencent par /api.Comment configurer les gestionnaires Undertow pour prendre en charge la réécriture appropriée pour le signet SPA?

Voici ma configuration actuelle (levée d'une autre réponse 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') 

Malheureusement, cela ne semble pas être quelque chose de réécriture. Comment puis-je mettre à jour cette configuration aux URL de réécriture de propriété?

Répondre

1

Pour commencer, essayez cette configuration dans WEB-INF/undertow-handlers.conf:

path-prefix('/api') -> done 
path-suffix('.js') -> done 
path-prefix('/') -> rewrite('/') 

Vous ne devriez pas avoir le préfixe /my-app sur les règles telles qu'elles sont déjà en cours d'exécution dans le cadre de votre application. Cependant, vous devrez peut-être ajouter d'autres prédicats pour éviter de réécrire d'autres ressources telles que des feuilles de style, des favicons, des sourcemaps, etc. Le full list of predicates and handlers peut être utile pour produire des règles plus spécifiques et ciblées.

Veuillez noter que path-suffix prend toujours en compte le chemin /app?thing.js. Bien que vous ne puissiez jamais utiliser un paramètre de requête comme celui-là, il est bon de garder à l'esprit qu'il sera réécrit.