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

问题描述 投票:0回答:1

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

  • 我们有一个以Java编写的根目录托管的API
  • 我们在/ admin托管了一个Angular应用程序
  • 我们在/ marketing上托管了另一个Angular应用程序

我担心的是深层链接。如果用户位于/ marketing / products / 1,并且他们刷新浏览器或共享链接,则我需要服务器将该路由发送到正确的Angular应用程序,以便可以正确生成它。

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

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

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

java angular url-rewriting deep-linking websphere-liberty
1个回答
0
投票
我可以看到几种可能的前进方式。

    您仍然可以在error-page中使用web.xml指令,但是在应用程序中指定servlet的URL,该servlet可以手动进行检查并根据需要发出重定向。根据打包方式的不同,如何将上下文根列表提供给您的应用程序,但可以使用server.xml中的文件,环境变量或JNDI条目来完成。
  1. 如果可以更改URL,则可以将Angular应用更改为在其路由器中使用HashLocationStrategy,这将绕过错误页面。似乎不太可能是这种情况,但我将其放在此处以使其不受干扰。
  2. 您可以考虑将每个Angular应用拆分为自己的HashLocationStrategy文件,并在.warwebApplication元素中配置上下文根。然后重定向到webApplication中的server.xml将起作用,因为该/相对于上下文根。
© www.soinside.com 2019 - 2024. All rights reserved.