Перезапись URL-адреса IIS с помощью нескольких строк запроса

Я действительно новичок в переписывании URL-адресов и пытаюсь переписать/перенаправить несколько запросов, но, похоже, не работает. Поскольку это результат поиска, к которому применяются различные фильтры, запросы могут различаться. Например, в одном поиске у нас может быть запрос t1=something, а в другом у нас может быть t2=somethingelse, а иногда мы можем комбинировать их, например: t1=something&t2=somethingelse

Я использую IIS7 с web.config, и вот что я сделал до сих пор:
Это мой пример ссылки

www.website.com/search/?t1=first&t2=second 

Я пробовал следующее, и ни одно из них не сработало:
(1)

<rewrite> 
    <rules> 
        <rule name="first" stopProcessing="true">
            <match url="search/" />
            <conditions trackAllCaptures="true">
                <add input="{QUERY_STRING}" pattern="t1=([0-9a-zA-Z]+)" />
            </conditions>
            <action type="Redirect" url="search/{C:1}/" appendQueryString="false" />
        </rule>

        <rule name="second" stopProcessing="true">
            <match url="search/" />
            <conditions trackAllCaptures="true">
                <add input="{QUERY_STRING}" pattern="t2=([0-9a-zA-Z]+)" />
            </conditions>
            <action type="Redirect" url="search/{C:1}/" appendQueryString="false" />
        </rule>
    </rules>
</rewrite>

(2)

<rule name="a" stopProcessing="true">
    <match url="search2/" />
    <conditions trackAllCaptures="true">
        <add input="{QUERY_STRING}" pattern="t1=([0-9a-zA-Z]+)" />
        <add input="{QUERY_STRING}" pattern="t2=([0-9a-zA-Z]+)" />
    </conditions>
    <action type="Redirect" url="search2/{C:1}/{C:2}" appendQueryString="false" />
</rule>

Буду очень признателен за любую помощь.

Спасибо.


person Jay    schedule 01.11.2012    source источник
comment
Жалко, что никто так и не ответил   -  person Giuseppe Romagnuolo    schedule 18.02.2016


Ответы (2)


Кроме того, этот пост может дать ответ -

Настройка отслеживания групп захвата по условиям

РЕДАКТИРОВАТЬ: пример из ссылки выше

Обратите внимание на trackAllCaptures=true.

<rule name="Back-references with trackAllCaptures set to true">
 <match url="^article\.aspx" >
 <conditions trackAllCaptures="true">
    <add input="{QUERY_STRING}" pattern="p1=([0-9]+)" />
    <add input="{QUERY_STRING}" pattern="p2=([a-z]+)" />  
 </conditions>
 <action type="Rewrite" url="article.aspx/{C:1}/{C:2}" /> <!-- rewrite action uses back-references to both conditions -->
</rule>

person Red Storm    schedule 14.06.2018
comment
Должен быть отмечен как ответ! Сработал для меня. - person soutarm; 15.01.2020

Решил поделиться ссылкой на то, что нашел -

возможный ответ здесь

Кроме того, для разделения нескольких параметров вы можете использовать оператор канала. Например, что-то вроде этого:

парм1=(\ш+)|парм2=(\ш+)

применить целевой URL с {C:1} и {C:2}

Итак, такой URL:

ваше приложение/список.aspx?parm1=abc&parm2=123

приведет к обратным ссылкам следующим образом - {C:1}=abc и {C:2}=123

person Red Storm    schedule 14.06.2018