Angular 2 \ 4 URL重写影响iis服务器中的数据api

时间:2017-08-04 08:53:41

标签: angular mod-rewrite iis url-rewriting web-config

我有一个有角度的应用程序,有3页:

myserver.com/myVirtualDir/login
myserver.com/myVirtualDir/overview
myserver.com/myVirtualDir/insights

在发布构建版本后,我将dist文件夹的内容放在名为myVirtualDir的虚拟目录中。我在myVirtualDir

中有一个web.config文件

我添加了以下重写规则,以便我可以使用上述网址直接打开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>

0 个答案:

没有答案