2016-04-01 7 views
4

Я хочу, чтобы перенаправить некоторые страницы из старого сайта (oldsite.com) на новый веб-сайт в соответствии со следующими правилами (NewSite *.):IIS URL Rewrite отрицают условия не работают

  • Все первого уровня дети (/ sv,/no,/da и т. д.) должны перенаправлять свои соответствующие коллеги, т. е. newsite.se, newsite.no, newsite.dk и т. д.
  • Все остальные дети/потомки должны перенаправляться в корень новые сайты, а также кроме/page1 и/page2 и его потомков.

Для этого я создал следующие правила (для св в данном случае):

<rule name="Redirect /sv to .se" stopProcessing="true"> 
    <match url="^sv/?$" /> 
     <action type="Redirect" url="http://newsite.se" /> 
</rule> 
<rule name="Redirect /sv/* except some pages" stopProcessing="true"> 
    <match url="^sv/.+" /> 
    <conditions logicalGrouping="MatchAll"> 
     <add input="{REQUEST_URI}" pattern="^sv/page1(.*)" negate="true" /> 
     <add input="{REQUEST_URI}" pattern="^sv/page2(.*)" negate="true" /> 
    </conditions> 
    <action type="Redirect" url="http://newsite.se" /> 
</rule> 

Первое правило отлично работает, но не второй. Проблема в том, что мои отрицательные условия, похоже, не работают. Когда я вхожу в oldsite.com/sv/page1, я все равно перенаправляюсь на newsite.se. Возможно, я неправильно понял, как работают отрицательные условия, но не следует, чтобы второе правило выполняло действие тогда и только тогда, когда оба условия истинны (оцениваются как ложные), т. Е. REQUEST_URI не match/page1 и/page2?

ответ

5

Вы понимаете концепцию очень хорошо.

Единственная проблема заключается в том, что {REQUEST_URI} всегда начинаются с / и URL никогда не совпадает с рисунком, как ^sv/page1(.*), наконец, у вас есть совершенно новый ложный положительный результат.

Итак, вам нужно включить ведущие косые черты в шаблоне.

<add input="{REQUEST_URI}" pattern="^/sv/page1(.*)" negate="true" /> 
<add input="{REQUEST_URI}" pattern="^/sv/page2(.*)" negate="true" /> 

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

  • Нет связанных вопросов^_^