0

以下是一些要处理的 URL 的 IIS 重写规则:

    <rule name="rule" stopProcessing="true">
      <match url="^(word|world|hero|about)[/]?$" />
      <conditions>
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
      </conditions>
      <action type="Rewrite" url="/info.aspx?id={R:1}" />
    </rule>

如何创建相反的规则?例如,我想处理除“/special”、“/escape”之外的所有URL。这个:

    <rule name="rule" stopProcessing="true">
      <match url="^(?!(special)&amp;?!(escape))[/]?$" />
      <conditions>
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
      </conditions>
      <action type="Rewrite" url="/info.aspx?id={R:1}" />
    </rule>

不起作用。“/special”和“/escape” URL 会按应有的方式处理,但其他 URL 会给我 404 页。

4

1 回答 1

0

在这种情况下,您必须使用该negate属性。

您的规则将变为:

<rule name="rule" stopProcessing="true">
  <match url="^(special|escape)/?$" negate="true" />
  <conditions>
    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
  </conditions>
  <action type="Rewrite" url="/info.aspx?id={R:1}" />
</rule>
于 2013-09-19T20:43:43.883 回答