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 に答える