IIS 7 URL переписать - PullRequest
       21

IIS 7 URL переписать

1 голос
/ 24 октября 2011

Как мне переписать все после знака вопроса (?) Как один параметр?

Например, у меня есть URL-адрес: http://www.example.com? Abcdefg / test / module? Wiating4request

Обратите внимание, после первого знака вопроса у нас есть еще один в строке запроса. Мне в основном нужно опубликовать этот URL-адрес, и я не могу изменить URL-адрес, поэтому мне нужно разобраться с тем, что предоставляется.

Я видел что-то похожее здесь: Как я могу использовать mod_rewrite, чтобы удалить все после? (вопросительный знак) в URL?

Имейте в виду, что это для IIS 7.

Есть идеи?

1 Ответ

1 голос
/ 28 октября 2011

Это можно сделать с помощью правила перезаписи, если вы хотите, чтобы URL совпадал только с одним знаком вопроса, слишком много, как в вашем примере. Затем вы можете использовать это правило:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="Clean extra question mark from query string" stopProcessing="true">
                    <match url="(.*)" />
                    <conditions>
                        <add input="{QUERY_STRING}" pattern="^(.+?)(\?(.+))*$" />
                    </conditions>
                    <action type="Rewrite" url="/{URL}?{C:1}&amp;{C:3}" appendQueryString="false" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

Если вы хотите сопоставить неограниченное количество слишком многих вопросительных знаков, я думаю, вам нужно будет вернуться к поставщику пользовательских перезаписей , как подробно описано в связанной статье. Тогда вы можете получить что-то вроде:

<rule name="Clean extra question mark from query string" stopProcessing="true">
    <match url="(.*)" />
    <conditions>
        <add input="{QUERY_STRING}" pattern="^$" negate="true" />
    </conditions>
    <action type="Rewrite" url="/{URL}?{ReplaceProvider:{QUERY_STRING}}" appendQueryString="false" />
</rule>
...