如何配置暗流处理程序以支持正确重写 SPA 书签?



我正在尝试配置 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?

首先,在WEB-INF/undertow-handlers.conf中尝试以下配置:

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

你不需要任何规则的/my-app前缀,因为它们已在应用的上下文中运行。

但是,您可能需要添加其他谓词以防止重写其他资源,如样式表、收藏夹图标、源映射等。谓词和处理程序的完整列表有助于生成更具体、更有针对性的规则。

请注意,path-suffix仍然占/app?thing.js这样的路径。虽然您可能永远不会使用这样的查询参数,但最好记住它将被重写。

最新更新