我正在尝试配置JBoss EAP 7(通过Undertow)使用Undertow处理程序将任何SPA URL正确地重写回SPA的index.html
。不幸的是,我的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?
答案 0 :(得分:2)
首先,请在WEB-INF/undertow-handlers.conf
中尝试此配置:
path-prefix('/api') -> done
path-suffix('.js') -> done
path-prefix('/') -> rewrite('/')
您不应该在任何规则上使用/my-app
前缀,因为它们已经在您的应用上下文中运行。
但是,您可能需要添加其他谓词以防止重写其他资源,如样式表,favicon,sourcemaps等。https://github.com/opensas/twitter-scrapper可以帮助您生成更具体,更有针对性的规则。
请注意,path-suffix
仍然会占用/app?thing.js
之类的路径。虽然您可能永远不会使用这样的查询参数,但请记住它会被重写。