Все,
Я потратил почти день, пытаясь понять это. Теперь я беспомощен после всех поисков и хочу обратиться к сообществу.
Я хочу перенаправить любой трафик на свой сайт в соответствии со следующим правилом
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="/test.aspx?c={C:0}" appendQueryString="true" />
</rule>
Любая помощь высоко ценится
Итак, после дополнительных исследований и проб и ошибок я смог понять это. Вот как я его настроил сейчас.
<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?client={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 - Шаблон (. *)
Первое условие гарантирует, что все, что следует за квалифицированным доменным именем, имеет хотя бы один непробельный символ.
Второе условие гарантирует, что в анализируемой части нет специальных символов. Это было моим требованием.