Parâmetros de cadeia de consulta do módulo de reconfiguração de URL do IIS

6

É possível usar URL Rewrite para fornecer uma funcionalidade de string de consulta mais complexa que a caixa de seleção "Append query string" que tem? Especificamente, é possível especificar as chaves para determinados parâmetros de string de consulta e incluí-los somente em pares de valores de nome.

Por exemplo, para a entrada:

link

e a lista de chaves de parâmetros de string de consulta: beta gamma

deve sair: link

(Observe que os parâmetros da string de consulta na entrada aparecem em ordem arbitrária.)

    
por Jason Kresowaty 24.03.2012 / 14:37

1 resposta

12

Minha solução seria condições de uso para isso. Ao combinar as condições com o {QUERY_STRING} , você pode usar referências posteriores para usá-las no URL de redirecionamento.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="Redirect" stopProcessing="true">
                    <match url="(.*)" />
                    <conditions trackAllCaptures="true">
                        <add input="{QUERY_STRING}" pattern="&amp;?(beta=[^&amp;]+)&amp;?" />
                        <add input="{QUERY_STRING}" pattern="&amp;?(gamma=[^&amp;]+)&amp;?" />
                        <add input="{REQUEST_URI}" pattern="^/redirect" negate="true" />
                    </conditions>
                    <action type="Redirect" url="/redirect?{C:1}&amp;{C:2}" appendQueryString="false" redirectType="Found" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

O único problema possível com essa solução pode ser (dependendo do que você deseja) é que o redirecionamento só acontecerá se as variáveis de cadeia de consulta beta e gamma estiverem presentes na cadeia de consulta. Se não estiverem, o redirecionamento não acontecerá.

A regra de redirecionamento corresponde a qualquer URL ( (.*) ). Se necessário, você pode mudar isso. Eu também adicionei uma condição extra para não ter a correspondência de regra contra a própria URL de redirecionamento, que faria com que a URL de redirecionamento fosse redirecionada.

    
por 31.03.2012 / 15:59