2016-01-26 3 views
1

Я хочу, чтобы перенаправить трафик на моем сайте на основе следующего правилаIIS URL Rewrite - Перенаправление для вложенной на страницу

https://www.test.com/abc ->https://www.test.com/test1.aspx?c=abc
https://www.test.com/def ->https://www.test.com/test1.aspx?c=def

Подпапка должна быть передан как строка запроса

Я пробовал это, и он не работает.

<rule name="Reditect1" stopProcessing="true"> 
        <match url="^(.*)test.com/(.*)" /> 
        <conditions> 
         <add input="{R:2}" pattern="^[a-zA-Z0-9_]*$" /> 
        </conditions> 
        <action type="Redirect" url="/test1.aspx?c={C:0}" appendQueryString="true" /> 
       </rule> 

ответ

0

Итак, после дальнейших исследований и испытаний и ошибок я смог понять это. Вот как я сейчас настраиваюсь.

<rule name="Redirect1" stopProcessing="true"> 
     <match url="^(.*)$" /> 
      <conditions> 
       <add input="{R:0}" pattern="^(?!\s*$).+$"/> 
       <add input="{R:0}" pattern="^[a-zA-Z0-9_]*$" /> 
      </conditions> 
     <action type="Redirect" url="/test1.aspx?c={C:0}" appendQueryString="true" /> 
    </rule> 

Примечание
Правило была установка на уровне сайта, а не на уровне сервера в IIS. Следовательно, сопоставление шаблонов игнорирует имя домена.

^(.*)test.com/(.*) - tried matching a test.com after the actual qualified domain name. So www.test.com/test.com/abc would satisfy the condition and not www.test.com/abc

Объяснение

Правило соответствует любому URL, который приходит в - (. *) Pattern

Первое условие гарантирует, что все, что следует доменное имя квалифицированное имеет по крайней мере один непространственный символ

Второе условие гарантирует отсутствие специальных символов в обрабатываемой части. Это было мое требование.