首页 > 解决方案 > Angular 部署 URL 资产路径

问题描述

大家可能都知道,在将 Angular 部署到根目录以外的路径时,资产路径存在问题:模板或样式表中存在的任何“/assets”路径都不会以部署路径为前缀。

我想编写一个 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

标签: angulariisurl-rewriting

解决方案


使用 deploy-url 选项构建 Angular 应用程序,如下所示:

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>

推荐阅读