2

是否可以根据最初请求的 URL 中存在的查询字符串使用 web.config 进行重定向?我不确定条件中包含什么。我是在 web.config 中使用重写/重定向规则的初学者,想了解更多关于语法、参数等的信息。

我正在尝试做这样的事情:

<rewrite>
<rules>

<rule name="Restricted Folder with Querystring" stopProcessing="true">
<match url="^test folder/(.*)" ignoreCase="false" />

    <conditions>
    <!--redirect to a certain page if a certain querystring is present -->
    </conditions>             
<action type="Redirect" redirectType="Permanent" url="/test folder/{R:1}" />
</rule>

<rule name="Restricted Folder without Querystring" stopProcessing="true">
<match url="^test folder/(.*)" ignoreCase="false" />              
    <conditions>
    <!--redirect to another page if querystring is not present -->
    </conditions>             
<action type="Redirect" redirectType="Permanent" url="https://www.whatever.com/page.asp?url={R:1}" />
</rule>

</rules>
</rewrite>
4

2 回答 2

3

deeholzman,我相信您的条件 - 添加输入示例您想使用“模式”而不是“匹配类型”。前任:

<add input="{QUERY_STRING}" pattern="^whateverpattern"  />

或者

<add input="{QUERY_STRING}" pattern="^whateverpattern" negate="true" />
于 2013-07-18T18:32:10.543 回答
2

我在URL Rewrite Module Configuration Reference中找到了答案。在您要从中执行重定向的任何文件夹中的 web.config 的 rewrite 部分中,它将如下所示:

<rules>
    <rule name="Restricted Folder Gimbal" stopProcessing="false">
      <match url="(.*)"  ignoreCase="true" />
      <conditions>
         <add input="{QUERY_STRING}" pattern="^whateverpattern"  />
      </conditions>
      <action type="Redirect" redirectType="Permanent" url="http://www.whatever.com/file.html" />
    </rule>     
  </rules>

对于不存在的查询字符串,您可以将 'negate' 参数添加到条件中:

 <add input="{QUERY_STRING}" pattern="^whateverpattern"  negate="true" />

URL Rewrite Module Configuration Reference是一个非常方便的参考,不幸的是,它花费的时间比预期的要长。

于 2012-11-08T18:05:36.403 回答