301 редирект не работает в IIS 7

Мне нужно создать это правило перенаправления 301: /blog/item.asp?n=12817 перенаправление на /blog/item/12817

Я создал правило в модуле перезаписи URL-адресов IIS со следующими параметрами:

Узор: ^blog/item.asp\?n=([0-9]+)

URL перенаправления: blog/item/{R:1}

Когда я тестирую его в IIS, он работает нормально, и он создал это правило в моем web.config:

<rule name="Asp classic Legacy 301 redirect" stopProcessing="true">
   <match url="^blog/item.asp\?n=([0-9]+)" />
   <action type="Redirect" url="blog/item/{R:1}" appendQueryString="true" />
</rule>

Но все же, когда я перехожу к /blog/item.asp?n=12817 в браузере, он показывает мне The resource cannot be found. ошибку с текстом Requested URL: /blog/item.asp

Почему это может быть? Мне нужно что-то еще где-то переключать?

Спасибо


person Burjua    schedule 12.01.2012    source источник


Ответы (1)


Хорошо, я создал другое правило, которое работает:

<rule name="Asp classic legacy 301 redirect">  
  <match url="blog/item\.asp$" />  
    <conditions>  
      <add input="{QUERY_STRING}" pattern="n=(\d+)" />  
    </conditions>  
    <action type="Redirect" url="blog/item/{C:1}" redirectType="Permanent" appendQueryString="false"/>  
</rule> 

Все еще задаетесь вопросом, почему модуль перезаписи URL-адресов генерирует правила, которые не работают?

person Burjua    schedule 13.01.2012