我有一个 Angular 应用程序,可以毫无问题地部署到 Azure App Service。
首先,我使用以下命令编译我的应用程序:
ng build --output-path=dist --aot -prod
然后我将以下内容添加web.config
到dist
文件夹中:
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="AngularJS 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="/" />
</rule>
</rules>
</rewrite>
<caching enabled="true" enableKernelCache="true">
<profiles>
<add extension=".js" policy="DisableCache" kernelCachePolicy="DisableCache" />
</profiles>
</caching>
</system.webServer>
</configuration>
然后我压缩dist
文件夹的内容并将其拖到我的 Azure 应用程序 ( https://<site.scm.azurewebsites.net>/ZipDeploy
) 中。此时应用程序运行良好。
我的问题是我想为不同的语言环境部署不同版本的应用程序。
我使用以下命令编译我的不同版本:
ng build --output-path=dist/en --aot -prod --bh /en/ --i18n-format=xlf --locale=en
ng build --output-path=dist/fr --aot -prod --bh /fr/ --i18n-file=src/locale/messages.fr.xlf --i18n-format=xlf --locale=fr
这将输出文件夹en
并包含应用程序的不同版本。我在应用程序的每个版本中添加一个,例如内部和.fr
/dist
web.config
/dist/en
dist/fr
接下来,我压缩 en & fr 文件夹并使用ZipDeploy
上述方法进行部署。
我可以在以下位置看到我的应用程序主页运行良好:
https://<site>.azurewebsites.net/en
https://<site>.azurewebsites.net/fr
https://<site>.azurewebsites.net/fr/redirect.html#state....
但是 - 当我在(我正在使用 Azure B2C 登录)被重定向到我的应用程序时,我收到以下错误:
You do not have permission to view this directory or page.
这感觉就像 iis 试图将我的 url 从字面上解释为一个目录,而不是让 Angular 处理路由,但我不确定。
有人知道如何正确执行此操作吗?