Angular 5:将应用程序部署到嵌套文件夹下的IIS

时间:2018-08-06 11:32:22

标签: angular iis url-rewriting angular5 angular-routing

我正在使用 Angular 5.2 并将其部署在我的 localhost IIS服务器中,并且工作正常。

我的本​​地主机URL看起来像这样:-http://localhost/DEV

DEV是我的localhost IIS服务器中的虚拟目录。上面的网址一切正常。

现在,我想在DEV中添加另一个嵌套的VD作为childApp。 我希望我的应用以 http://localhost/DEV/childApp 的身份运行。

因此,我将index.html内容更改为具有这样的基本href:-

<base href="/DEV/childApp/">

并且还将URL重写规则的web.config文件更新为:-

来自

<action type="Rewrite" url="./index.html" />

TO

<action type="Rewrite" url="/DEV/childApp/" />

Web.config看起来像这样:-

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <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="/DEV/childApp/" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

但是这使我抛出错误::

HTTP错误500.52-URL重写模块错误。无法添加具有唯一键属性“名称”设置为“角度路线”的“规则”类型的重复收集条目

请建议如何修复web.config以进行URL重写或其他位置。

1 个答案:

答案 0 :(得分:0)

<clear />添加到web.config是解决方案。

<configuration>
  <system.webServer>
    <rewrite>
      <rules>
       <clear /> <!--Imperative Step, otherwise IIS will throw err-->
        <rule name="Angular Routes" stopProcessing="true">
          <match url=".*" />
          ............
          ..........