Asp.net 将apache重写规则转换为IIS web.config

Asp.net 将apache重写规则转换为IIS web.config,asp.net,iis,web-config,rewrite,Asp.net,Iis,Web Config,Rewrite,我正在尝试将此apache重写规则转换为web.config规则,但无法使其正常工作 基本上,它检查用户代理并将代理重定向到提供的url # allow social media crawlers to work by redirecting them to a server-rendered static version on the page RewriteCond %{HTTP_USER_AGENT (facebookexternalhit/[09]|Twitterbot|Pin

我正在尝试将此apache重写规则转换为web.config规则,但无法使其正常工作

基本上,它检查用户代理并将代理重定向到提供的url

# allow social media crawlers to work by redirecting them to a server-rendered static      version on the page
RewriteCond %{HTTP_USER_AGENT (facebookexternalhit/[09]|Twitterbot|Pinterest|Google.*snippet)
RewriteRule qs/(\d*)$ http://sitetocrawl.com/doc?id=$1 [P]
这就是我目前所拥有的。但是,我不知道如何捕获url查询字符串参数。基本上是后面的文本字符串



不是答案,而是起点。IIS管理器(Windows 8.1上的IIS 8)将apache mod_重写规则转换为以下略有不同的配置:

<rewrite>
  <rules>
    <rule name="Imported Rule 1" stopProcessing="true">
      <match url="qs/(\d*)$" ignoreCase="false" />
      <conditions>
        <add input="%{HTTP_USER_AGENT}" pattern="(facebookexternalhit/[09]|Twitterbot|Pinterest|Google.*snippet)" ignoreCase="false" />
      </conditions>
      <action type="Rewrite" url="http://sitetocrawl.com/doc?id={R:1}" appendQueryString="false" />
    </rule>
  </rules>
</rewrite>

我看到它是重写而不是重定向,但请检查这是否适用于您的场景。如果它起作用,你可以开始改变它,直到达到预期的结果


现在我看到您的主要URL匹配模式只是
urlmatchpattern
,这当然不是一种模式,是您的规则不起作用的根本原因。

您是自己编写规则的吗,或者您按照此处的说明操作:我正在编写自己的…我只安装了Visual studio附带的IIS express,没有找到导入工具。非常感谢!这对我来说至少是一个很好的起点。今天晚些时候我会试试。我自己的示例是我刚刚尝试根据各种在线示例拼凑而成的。请注意
match
元素的
url
属性,正如您可能猜到的那样,这对于工作非常重要……不,我无法让它工作。我实际上尝试了30种不同的规则,简单的规则只是为了重定向来自特定用户代理的任何传入请求,没有任何参数。然后我使用facebook OG调试器工具查看它是否获取了规则提供的url,但没有成功。您好,您在
%{HTTP\u USER\u AGENT}
  <rule name="Rule1" stopProcessing="true">        
      <match url=".*" /> 
      <conditions> 
        <add input="{HTTP_USER_AGENT}" pattern="facebookexternalhit/1.1|Facebot" /> 
      </conditions> 
      <action type="Redirect" url="new url here" />       
  </rule>   
<rewrite>
  <rules>
    <rule name="Imported Rule 1" stopProcessing="true">
      <match url="qs/(\d*)$" ignoreCase="false" />
      <conditions>
        <add input="%{HTTP_USER_AGENT}" pattern="(facebookexternalhit/[09]|Twitterbot|Pinterest|Google.*snippet)" ignoreCase="false" />
      </conditions>
      <action type="Rewrite" url="http://sitetocrawl.com/doc?id={R:1}" appendQueryString="false" />
    </rule>
  </rules>
</rewrite>