Правило перезаписи URL IIS с помощью параметров - PullRequest
0 голосов
/ 05 февраля 2011

Мне трудно заставить работать правило перезаписи URL.

Я хочу этот URL:

http://www.mysite.com/oldpage.aspx?oldid=123

Переписать на:

http://www.mysite.com/sub/newpage.aspx?newid=123

Вот что у меня есть, но не работает:

<rule name="Old2New" stopProcessing="true">
    <match url="^oldpage.aspx?oldid=([0-9]+)" />
    <action type="Rewrite" 
            url="/sub/newpage.aspx?newid={R:1}" 
            appendQueryString="true"  />
</rule>

Чего мне не хватает?

Ответы [ 2 ]

1 голос
/ 05 февраля 2011

Индекс регулярного выражения начинается с 0, а не с 1. Таким образом, ваше правило должно быть:

<rule name="Old2New" stopProcessing="true">
    <match url="^oldpage.aspx?oldid=([0-9]+)" />
    <action type="Rewrite" 
            url="/sub/newpage.aspx?newid={R:0}" 
            appendQueryString="true"  />
</rule>

Вы можете легко проверить свое правило в интерфейсе IIS7.

0 голосов
/ 26 октября 2017

Используйте условия для перехвата части строки запроса {C: 1}, например:

<rule name="My rule" stopProcessing="true">
    <match url="^oldpage\.aspx" ignoreCase="true" />
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
        <add input="{QUERY_STRING}" pattern="oldid=([0-9]+)" />
    </conditions>
    <action type="Redirect" url="/sub/newpage.aspx?newid={C:1}" appendQueryString="false" />
</rule>

Протестировано и работает.

...