众所周知,将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
答案 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>