2014-09-04 110 views
0

我想把這個apache重寫規則翻譯成web.config規則,但我無法讓它工作。翻譯apache重寫規則到IIS 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 querystring參數。基本上文本字符串後http://example.com/qs/parameter

<rule name="Social Rewrite" patternSyntax="ECMAScript" stopProcessing="true"> 
<match url="urltomatchpattern" ignoreCase="true" negate="false" /> 
<conditions logicalGrouping="MatchAny" trackAllCaptures="false"> 
    <add input="{HTTP_USER_AGENT}" pattern="facebookexternalhit/[0-9]|Twitterbot|Pinterest|Google.*snippet" /> 
</conditions> 
<action type="Redirect" url="http://sitetocrawl.com/doc?parameter" appendQueryString="true" redirectType="Found" /> 
</rule> 

編輯:

我用簡單的規則很多變種,比如重定向試圖/改寫當一個特定的用戶代理請求的網站(在我的情況下,Facebook的履帶)。但我甚至無法讓這些規則起作用。我正在調試使用Facebook OG debugger

<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> 
+0

你是自己編寫規則,還是遵循這裏的說明:http://www.iis.net/learn/extensions/url-rewrite-module/importing-apache-modrewrite-rules – astaykov 2014-09-05 09:41:06

+0

我正在寫作我自己的...我只有安裝了Visual Studio的IIS Express,並且找不到導入工具。 – Josef 2014-09-05 09:42:48

回答

0

不是一個答案,而是一個起點。在IIS管理器(在Windows 8.1中的IIS 8)轉換你的apache的mod_rewrite規則到這個配置稍有不同:

<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這當然不是一種模式,並且是您的規則不起作用的根本原因。

+0

非常感謝!這對我來說至少是一個非常好的起點。我會在今天晚些時候嘗試。我自己的例子是我剛剛嘗試基於各種在線示例拼圖在一起的東西。 – Josef 2014-09-05 09:50:54

+0

注意'match'元素的'url'屬性,這對工作起着非常重要的作用,正如你可能猜到的那樣... – astaykov 2014-09-05 09:52:10

+0

是的絕對 – Josef 2014-09-05 09:54:56