Angular部署URL资产路径

时间:2018-11-03 10:30:36

标签: angular iis url-rewriting

众所周知,将Angular部署到root以外的路径时,资产路径会出现问题:模板或样式表中存在的任何“ / assets”路径都不会以部署路径作为前缀。 / p>

我想编写一个IIS重写规则,以检查部署路径中是否存在/assets/...路径,如果存在,则相应地重写URL。例如,假设我在/assets/1.jpg处有资产,而我的部署URL为/ui/,我想要一个重写规则,该规则接受请求URI,并在其前面加上/ui,以检查它是否是实际的文件系统文件,如果是,则将请求uri重写为/ui/assets/1.jpg

我尝试了以下操作,但我知道这不起作用:

<rule name="angular asset" stopProcessing="true">
    <match url="(.*)" />
    <conditions logicalGrouping="MatchAll">
        <add input="/ui/{REQUEST_URI}" matchType="IsFile" />
    </conditions>
    <action type="Rewrite" url="/ui/{R:1}" />
</rule>

编写这样的规则的正确方法是什么?

说明:我希望重写规则适用于所有前缀路径,而不仅限于/assets

1 个答案:

答案 0 :(得分:-1)

使用如下所示的deploy-url选项构建有角度的应用程序:

ng b --deploy-url /ui/

下一步在IIS下发布您的应用程序和主机

尝试按以下方式更新重写规则

<rule name="angular asset" stopProcessing="true">
    <match url="(.*)" />
    <conditions logicalGrouping="MatchAll">
        <add input="{REQUEST_URI}" pattern="(.*)"/>
    </conditions>
    <action type="Rewrite" url="/ui/{R:1}" />
</rule>