Назад | Перейти на главную страницу

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="/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 - Шаблон (. *)

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

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