angular - 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
解决方案
使用 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>