2014-09-04 2 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] 

Это то, что я до сих пор. Однако я не могу понять, как уловить параметр querystring url. В основном текстовая строка после 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> 

EDIT:

Я попробовал со многими вариантами простых правил, как перенаправление/переписать, когда конкретный агент пользователя запрашивает сайт (в моем случае, в 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

+0

Я пишу мой собственный ... У меня только экспресс-служба IIS, которая поставляется с установленной Visual Studio и не удалось найти инструмент импорта. – Josef

ответ

0

не ответ, но отправную точку. Диспетчера IIS (IIS 8 на ОС Windows 8.1) переводит ваши 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

+0

не учитывайте атрибут 'url' элемента' match', что очень важно для работы, как вы могли догадаться ... – astaykov

+0

Да, абсолютно – Josef

Смежные вопросы