2015-08-14 14 views
6

So che posso riscrivere un url in base ai valori di un cookie utilizzando la variabile {HTTP_COOKIE} nella parte delle condizioni della regola. Questa regola prende un cookie chiamato ServerProxy e esegue una riscrittura sull'URL del server.Utilizzo di ARR come si riscrive un URL se manca un cookie?

<rule name="SendTrafficToServerProxyCookieValue" stopProcessing="true"> 
    <match url="(.*)" /> 
    <action type="Rewrite" url="http://{C:1}/{R:0}" /> 
    <conditions> 
     <add input="{HTTP_COOKIE}" pattern="ServerProxy=(.*)" /> 
    </conditions> 
</rule> 

Se il cookie ServerProxy è assente o non impostato vorrei dirigere il traffico verso un server di autenticazione chiamato authenticate.app. Come scrivo una regola di riscrittura che lo farà?

risposta

5

Prova questo:

<rule name="SendTrafficToServerProxyCookieValue" stopProcessing="true"> 
    <match url="(.*)" /> 
    <action type="Rewrite" url="http://{C:1}/{R:0}" /> 
    <conditions> 
     <add input="{HTTP_COOKIE}" pattern="ServerProxy=(.+)" /> 
    </conditions> 
</rule> 
<rule name="DoAuthRewrite" stopProcessing="true"> 
    <match url="(.*)" /> 
    <action type="Rewrite" url="SOMETHING_ELSE" /> 
    <conditions> 
     <add input="{HTTP_COOKIE}" pattern="ServerProxy=(.+)" negate="true" /> 
    </conditions> 
</rule> 

Nota che * sono stati modificati per + per assicurarsi che cookie non è vuoto. Negate semplicemente la condizione dei salti mortali, quindi la rende vuota o inesistente.

+0

Funziona alla grande, grazie. –

Problemi correlati