代码之家  ›  专栏  ›  技术社区  ›  Peekyou

IIS重写2个角度应用程序

  •  0
  • Peekyou  · 技术社区  · 6 年前

    我有两个角度应用程序。一个在我的主域中,另一个在这个域中一个名为“merchant”的虚拟目录中。 我想对两者都有重写规则,这样我就可以在地址栏中输入URL,而不需要404页面。为此,我放了一张网。配置两个文件夹,但我无法让两个应用程序同时重写规则。

    在主应用程序web中。配置我有

    <rewrite>
          <rules>
            <rule name="block" stopProcessing="true">
                <match url="^merchant/(.*)$" />
                <action type="Redirect" url="merchant/{R:1}" />
              </rule>
           <rule name="Application Routes" patternSyntax="Wildcard">
              <match url="*" />
              <conditions>
                <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
    
              </conditions>
              <action type="Rewrite" url="/" />
            </rule>
          </rules>
        </rewrite>
    

    有了这个conf,重写对于主应用程序很好,但对于第二个应用程序就不行了。我以为第一条规则会重定向到虚拟文件夹web。配置,但似乎不是。下面是我的虚拟文件夹web中的规则。配置:

    <rewrite>
          <rules>
            <rule name="AngularJS 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="/merchant/" />
            </rule>
          </rules>
        </rewrite>
    

    当然,如果我从主网站删除所有规则。配置,第二个正在工作,但不再是第一个。。。

    我怎样才能同时得到这两个呢?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Peekyou    6 年前

    最后我找到了一个解决办法。正如funkizer评论的那样,我必须将所有规则放在同一个网站上。配置 在主web下方。配置2条规则

    <rewrite>
      <rules>
       <rule name="AngularJS Routes" stopProcessing="true">
          <match url="^merchant/(.*)$" />
          <conditions >
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
          </conditions>
          <action type="Rewrite" url="merchant/" />
        </rule>
       <rule name="Application Routes" patternSyntax="Wildcard">
          <match url="*" />
          <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
    
          </conditions>
          <action type="Rewrite" url="/" />
        </rule>
      </rules>
    </rewrite>
    

    我还必须保持另一个网络。但我删除了里面的所有规则。 现在,两个应用程序都可以通过直接url访问