我有一个有角度的应用程序,有3页:
myserver.com/myVirtualDir/login
myserver.com/myVirtualDir/overview
myserver.com/myVirtualDir/insights
在发布构建版本后,我将dist文件夹的内容放在名为myVirtualDir
的虚拟目录中。我在myVirtualDir
。
我添加了以下重写规则,以便我可以使用上述网址直接打开login \ overview \ insights页面:
<rewrite>
<rules>
<rule name="Angular" 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="/myVirtualDir/" />
</rule>
</rules>
</rewrite>
虽然这些规则按预期工作,即我可以直接打开login \ overview \ insights页面,使用上面提到的URL,它也会影响应用程序用于获取数据的web api调用。
api具有以下格式:
http://myserver.com/myVirtualDir/myAPI/api/categories
http://myserver.com/myVirtualDir/myAPI/api/contacts
http://myserver.com/myVirtualDir/myAPI/api/lists
and so on...
当进行api调用时,这些规则也会重写上述api URL。我的问题是如何限制规则以避免api重写,同时尊重现有的角度URL重写。
这是我目前在web.config文件中的内容:
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="http://localhost:4200" />
<add name="Access-Control-Allow-Headers" value="Content-Type, responseType, X-Email, X-Key" />
<add name="Access-Control-Allow-Methods" value="GET, POST, OPTIONS" />
</customHeaders>
</httpProtocol>
<rewrite>
<rules>
<rule name="Angular 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="/myVirtualDir/" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>