IIS regra de reescrita para verificar querystring e adicioná-lo se não estiver lá

3

Estou tentando criar uma regra de reescrita de URL do IIS que acrescente um parâmetro de URL ao URL. O parâmetro url é hssc . Portanto, qualquer URL processada pelo servidor precisa desse parâmetro. Tendo em mente que alguns URLs já terão seus próprios parâmetros e outros URLs não, e URLs raiz, etc, às vezes, será necessário adicionar ?hssc=1 ou &hssc= - portanto, se eu tiver uma URL que seja tão tal:

Eu também quero que o URL não seja escondido (como em um back-end reescrito nos bastidores). Preciso que o URL apareça no URL, portanto, quando os usuários copiarem o URL ou marcarem como favorito, o parâmetro estará lá.

Eu defini a condição para corresponder a \&hssc|\?hssc - agora só preciso de uma maneira de escrever o URL, para que ele apareça e mantenha a parte do URL original que já existe.

    
por M.R. 29.09.2012 / 03:33

1 resposta

2

Isso deve funcionar:

<rule name="Add hssc param" stopProcessing="true">
  <match url=".*" />
  <conditions>
    <add input="{QUERY_STRING}" pattern="hssc=1" negate="true" />
    <add input="&amp;{QUERY_STRING}" pattern="^(&amp;.+)|^&amp;$" />
  </conditions>
  <action type="Redirect" url="http://{HTTP_HOST}/{R:0}?hssc=1{C:1}" appendQueryString="false"  />
</rule>

Isso sempre prefixará o hssc = 1 no início da querystring enquanto preserva o restante da querystring. Isso funciona para todos os seus exemplos. Eu tinha antes ao invés de acrescentar, mas presumo que seja o mesmo resultado final.

    
por 01.10.2012 / 18:46