通过路由在Glassfish上托管Angular应用程序会产生404错误

时间:2020-09-28 21:11:37

标签: angular glassfish

在我的应用程序中,我有一个Java REST API后端和一个Angular前端。

我以前用glassfish托管API,用IIS托管Angular代码,但这引起了一些问题,现在我希望将所有内容移到glassfish服务器上。

API在带有上下文根/Foo的glassfish 4服务器上运行;在端口8080 / 8181上,具体取决于是http还是https

已将IIS设置为通过端口80 / 443提供角度代码。

这对具有严格防火墙设置的客户端造成了问题,这些客户端由于Glassfish端口未打开而阻止了对后端的API调用。因此,我决定将角度代码移至glassfish的/docroot/文件夹中,并将其用作角度服务器而不是IIS的Web服务器。这样,前端和后端都可以在相同的端口上运行。

我的Angular代码位于/docroot/v1/中。

角度站点设置为单页应用程序,并使用角度的Router进行路由。 Angular站点的上下文根为/v1/。如果您从/v1/index.html开始并导航到其他路线,则该站点可以正常工作。但是,如果您手动尝试访问路线,则会引发404错误。我使用IIS时的解决方案是设置重写规则,以将所有内容重定向回/v1/

我有以下web.config文件:

<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Angular Routes" stopProcessing="true">
          <match url=".*" />
          <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
          </conditions>
          <action type="Rewrite" url="/v1/" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

如何在不弄乱也在服务器上运行的API的情况下使用glassfish实现相同的目的?

0 个答案:

没有答案