Как я могу получить несколько строк запроса из URL при перенаправлении в IIS? - PullRequest
0 голосов
/ 01 мая 2019

Я добавляю некоторые правила перезаписи URL в свой IIS, чтобы он перенаправлял старый URL в новое местоположение.

Это работает, когда URL имеет только один параметр строки запроса, но если у меня более одного, это не работает. Что я могу сделать, чтобы я мог получить второй параметр, если он существует, а если нет, то просто получить первый?

Вот мое правило web.config.

<rule name="Rewrite rule1 for viewtopic.php" stopProcessing="true">
   <match url="^.*(?:viewtopic.php).*$.*" />
   <conditions>
     <add input="{QUERY_STRING}" pattern="^t=/name=([0-9]*)/" />
   </conditions>
   <action type="Redirect" url="https://example.com/view/{C:1}/topic" appendQueryString="false" redirectType="SeeOther" />
</rule>

Правило будет работать, если мой URL такой. https://example.com/viewtopic.php?t=123456

Теперь у меня есть несколько старых URL-адресов, отформатированных так: https://example.com/viewtopic.php?t=123456&highlight=Welcome

в этом случае при запуске правила IIS мне выдается следующий URL-адрес перенаправления https://example.com/view/123456&highlight=Welcome/topic и я пытаюсь сделать так, чтобы URL был таким: https://example.com/view/123456/topic

1 Ответ

1 голос
/ 02 мая 2019

Согласно вашему описанию, я предлагаю вам попробовать использовать приведенное ниже правило перезаписи URL.

Он будет соответствовать только первому значению строки запроса.

            <rule name="MultipleQueryStringRule" stopProcessing="true">
                <match url="^.*(?:viewtopic.php).*$.*" />
                <conditions>
                    <add input="{QUERY_STRING}" pattern="^t=([0-9a-zA-Z]*)" />
                </conditions>
                <action type="Redirect" url="https://example.com/view/{C:1}/topic" appendQueryString="false" />
            </rule>
...