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

时间:2017-07-07 19:08:44

标签: url-rewriting jboss single-page-application bookmarks undertow

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

1 个答案:

答案 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之类的路径。虽然您可能永远不会使用这样的查询参数,但请记住它会被重写。