2014-10-16 3 views
2

Я перенаправлять свой веб-сайт URL-адресов для мобильных устройств со следующими условиями:IIS Rewrite URL Состояние Группировка

<conditions logicalGrouping="MatchAny"> 
    <add input="{HTTP_USER_AGENT}" pattern="midp|mobile|phone" /> 
    <add input="{HTTP_X-Device-User-Agent}" pattern="midp|mobile|phone" /> 
    <add input="{HTTP_X-OperaMini-Phone-UA}" pattern="midp|mobile|phone" /> 
    <add input="{StaticRedirects:{R:1}}" pattern="(.+)" /> 
</conditions> 

Я хочу, чтобы сгруппировать эти первые три условия вместе, и последний из них в отдельности.

правило Перенаправление должно применяться, если:

  1. HTTP_USER_AGENT или HTTP_X-Device-User-Agent или HTTP_X-OperaMini-Phone-UA соответствует шаблону
  2. и {StaticRedirects:{R:1}} соответствует шаблону

Есть ли способ для группирования этих условий?

PS: У меня есть почти 10 правил. Должен ли я писать первые три условия для каждого из моих правил или есть ли какой-либо тег для всех правил?

+0

У меня такая же проблема. как вы это решили? –

ответ

1

Вы можете достичь своей цели, используя дистрибутивный закон: (A + B) C = AC + BC

Используйте конкатенация переменных входных условий. Используйте разделитель, который не ожидается ни в одном из переменных значений. В приведенном ниже примере в качестве разделителя используется последовательность ///:

<conditions logicalGrouping="MatchAny"> 
    <add input="{HTTP_USER_AGENT}///{StaticRedirects:{R:1}}" 
     pattern="(midp|mobile|phone)///(.+)" /> 
    <add input="{HTTP_X-Device-User-Agent}///{StaticRedirects:{R:1}}" 
     pattern="(midp|mobile|phone)///(.+)" /> 
    <add input="{HTTP_X-OperaMini-Phone-UA}///{StaticRedirects:{R:1}}" 
     pattern="(midp|mobile|phone)///(.+)" /> 
</conditions>