Java 当Angular应用程序托管在子目录中时,如何在Websphere中重写URL

Java 当Angular应用程序托管在子目录中时,如何在Websphere中重写URL,java,angular,url-rewriting,deep-linking,websphere-liberty,Java,Angular,Url Rewriting,Deep Linking,Websphere Liberty,我们正在使用Websphere为我们托管一系列应用程序: 我们有一个托管在根目录下的API,它是用Java编写的 我们有一个Angular应用程序托管在/admin 我们有另一个Angular应用程序托管在/marketing 我关心的是深度链接。如果用户位于/marketing/products/1,并且他们刷新浏览器或共享链接,我需要服务器将该路由发送到正确的Angular应用程序,以便正确生成该路由 在一个更简单的设置中,Angular应用程序位于根目录下,我将使用Java应用程序的w

我们正在使用Websphere为我们托管一系列应用程序:

  • 我们有一个托管在根目录下的API,它是用Java编写的
  • 我们有一个Angular应用程序托管在/admin
  • 我们有另一个Angular应用程序托管在/marketing
我关心的是深度链接。如果用户位于/marketing/products/1,并且他们刷新浏览器或共享链接,我需要服务器将该路由发送到正确的Angular应用程序,以便正确生成该路由

在一个更简单的设置中,Angular应用程序位于根目录下,我将使用Java应用程序的web.xml文件将流量重定向到“/”。但在我当前的场景中,我需要营销网站的流量才能转到“/营销”,而不仅仅是“/”。就像来自管理站点的深层链接需要转到“/admin”

此外,这些Angular应用程序的基本URL可能会更改,我们还计划向同一服务器添加其他Angular站点。所以我真的在寻找一个可以动态工作的解决方案,让服务器重定向到URL中的第一个“slug”,而不是匹配特定的目录


有什么想法吗?(请原谅并纠正我在上面演示的任何误解——我目前对WebSphere知之甚少)

我可以看到一些可能的方法

  • 您仍然可以使用
    web.xml
    中的
    error page
    指令,但可以在应用程序中指定servlet的URL,该servlet可以手动执行检查,并根据需要发出重定向。为应用程序提供上下文根列表的方式将因其打包方式而异,但可以使用
    server.xml
    中的文件、环境变量或JNDI条目来完成
  • 如果URL可以更改,Angular应用程序可以更改为在路由器中使用,从而避开错误页面。看起来不太可能是这样,但我会把它放在这里,让它不碍事
  • <> LI>您可以考虑将每个角应用程序拆分为自己的<代码> .Wave<代码>文件,并在中的元素中配置上下文根。然后重定向到
    web.xml
    中的
    /
    ,会起作用,因为那/是相对于上下文根的
    我们最终将这些独立的Angular应用程序合并到1中,这样WebSphere就可以将所有内容定向到“/”,Angular routing就可以从那里处理所有内容。

    感谢这些建议!我将开始深入研究它们,看看会发生什么。这些都是很好的建议,最后我在前两个方面做了一些工作,但没能让它们发挥作用。我还尝试将应用程序转换为Angular Universal应用程序,但也遇到了问题。我最终决定将Angular应用程序合并到一个应用程序中。再次感谢你的帮助!