2016-10-19 2 views
0

を使用して、ほんの少しのものを除いて、すべての要求をリダイレクトする方法具体的なドメイン上にわずかなURLを許可しようとしていますが、他の要求はすべて404に見つかりません。 具体的なURLを404にリダイレクトする方法はわかっていますが、これを逆にする必要があります。そのようなルールを書くにはどうすればよいですか?ルールの構文にnot matchのようなものがありますか?IISリライトモジュール

だから、私は現在、何を使用しています:

<rule name="Deny some request" enabled="true" stopProcessing="true"> 
     <match url="^(.*)$" /> 
     <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> 
     <add input="{HTTP_HOST}" pattern="(.*)(\.domain_regexp_here.*)$" negate="true" /> 
     <add input="{REQUEST_URI}" pattern="(.*)(somename)$" /> 
     </conditions> 
     <action type="Redirect" url="/Home/PageNotFound" appendQueryString="false" /> 
    </rule> 

しかし、私もそのうちのいくつかを欠場することができ、そして、私は少しを簡素化したい理由ですように、今、このようなルールのあまりに多くがあるので、いくつかのURLを許可し、他のすべてのURLをNotFoundにリダイレクトします。

答えて

0

私は答えを見つけました。キーは、条件でnegate="true"です:

<rule name="RequestBlockingRule1" stopProcessing="true"> 
       <match url=".*" /> 
       <conditions> 
        <add input="{URL}" pattern="url path" negate="true" /> 
       </conditions> 
       <action type="CustomResponse" statusCode="404" statusReason="File or directory not found." statusDescription="The resource you are looking for might have been removed, had its name changed, or is temporarily unavailable." /> 
      </rule> 

URLが複数のを許可する場合 - より多くの条件を追加し、logicalGrouping="MatchAll"conditionsにノードを置きます。