2015-10-21 2 views
0

У нас есть веб-сайт, где по нам нужно перенаправить все дочерние адреса сайта, но не верхний уровень, т.е.Как игнорировать родительский URL в asp.net перенаправляет

www.domain.com/products/ переадресация некоторых продуктов на сайт www.domain.com/some-product-page

Это все хорошо и хорошо. Однако у нас есть страница, которая существует на www.domain.com/products, и эта страница перенаправляется на домашнюю страницу сайта.

Я пробовал два метода, чтобы попытаться решить эту проблему. Первый, используя отрицание, чтобы игнорировать URL верхнего уровня/продуктов. Но это также приводит к тому, что URL-адреса игнорируются.

<rule name="Redirect Products child pages" stopProcessing="true"> 
      <match url="^products/(.*)$" /> 
      <conditions> 
      <add input="{PATH_INFO}" pattern="^(/*)/?.*" /> 
      <add input="{REQUEST_URI}" negate="true" pattern="^products" ignoreCase="true" /> 
      </conditions> 
      <action type="Redirect" redirectType="Permanent" url="{R:1}" /> 
     </rule> 

Я пробовал варианты ввода этого шаблона с небольшим успехом.

Вторым методом, который я искал, было создание правила, которое выглядело только для/products/url, и прекратило обработку правил, когда они были найдены. Но это также имеет тот же эффект, что и первый метод.

<rule name ="Prevent Products page redirect" stopProcessing="true"> 
      <match url="(.*)" /> 
      <conditions> 
      <add input="{PATH_INFO}" pattern="^/products/" /> 
      </conditions> 
      <action type="None" /> 
     </rule> 

Так есть что-то мне нужно добавить к шаблону, чтобы сделать его игнорировать все другие URL-адреса, или я упускаю что-то другое?

Большое спасибо.

ответ

0

Нашел мой собственный ответ. Мой второй метод работал; просто нужно немного подкорректировать. Например:

<rule name ="Prevent Products page redirect" stopProcessing="true"> 
     <match url="(.*)" /> 
     <conditions> 
     <add input="{PATH_INFO}" pattern="^/products[/]$" /> 
     </conditions> 
     <action type="None" /> 
    </rule> 
    <rule name="Redirect Products child pages" stopProcessing="true"> 
     <match url="^products/(.*)$" /> 
     <conditions> 
     <add input="{PATH_INFO}" pattern="^(/*)/?.*" /> 
     </conditions> 
     <action type="Redirect" redirectType="Permanent" url="{R:1}" /> 
    </rule> 
Смежные вопросы