Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Impostazioni di regole in uscita

Uso e configurazione di regole di routing dal server Web verso il browser
Uso e configurazione di regole di routing dal server Web verso il browser
Link copiato negli appunti

La versione 2.0 del modulo di URL Rewrite per IIS, consente di impostare regole in uscita, cioè valutate in uscita, in risposta, dal server Web al browser dell'utente. Immaginiamo che nella pagina di prima index.php, che funzionava con i parametri in query string, lo sviluppatore abbia aggiunto un link usando il classico tag <a> dell'HTML, il suo codice, non pensato per lavorare con il modulo di URL Rewrite conterrà qualcosa del genere:

<a href="<?php echo $_SERVER["ORIG_PATH_INFO"]  . "?" . $_SERVER ["QUERY_STRING"] ?>">qui</a> un link a questo articolo

Questo codice fondamentalmente crea un URL nella forma "interna":

/index.php&id=...

Se passiamo il mouse sul link, possiamo visualizzare l'URL che sarebbe inviato al browser, nella barra di stato, come nella figura seguente:

Figura 25. Pagina HTML in cui si vede l'url interno
Pagina HTML in cui si vede l'url interno

Grazie alle regole in uscita possiamo modificare l'HTML presente nella pagina e sostituire il contenuto con un URL che utilizzi il nostro formato user-friendly.

Dobbiamo creare una regola che funzioni al contrario della precedente e che si attivi sulla risposta inviata dal server al client e non sulla richiesta che il broswer invia al server, come nei casi precedenti.

Per specifare una regola in uscita dalla console di IIS scegliamo "Outbound rules, Blank rule", come si vede in questa schermata:

Figura 26. Creazione di una regola in uscita
Creazione di una regola in uscita

A questo punto dobbiamo specificare la regola, definendo una precondizione che dovrà essere valida per la successiva elaborazione. Nel nostro caso specifichiamo che l'header della risposta HTTP deve contenere del testo in HTML, usando l'header HTTP {RESPONSE_CONTENT_TYPE} e applicando una regular expression per verificare che contenga il pattern ^text/html. Ecco il risultato nella finestra del wizard:

Figura 27. Precondizione
Precondizione

Specificata la precondizione, definiamo dove effettuare la sostituzione, in questo caso possiamo definire l'elemento HTML , in particolare il tag <a>, che troviamo tra le scelte disponibili. La parte più difficile è definire anche in questo caso il pattern, ma è possibile, come in precedenza, effettuare dei test di validazione. In figura è mostrata l'impostazione corretta:

Figura 28. Pattern per intercettare quanto presente nel tag <a>
Pattern per intercettare quanto presente nel tag <a>

La regola definita intercetta le stringhe con suffisso index.php ed i parametri id e title della querystring.

Infine dobbiamo definire l'azione da intraprendere: nel nostro si tratta di un rewrite in cui comporre un nuovo URL. L'espressione regolare intercetta e spezza l'url in tre parti chiamate R0, R1 e R2, come si vede effettuando il test di un indirizzo dalla console.

Ecco il risutato nell'ultima sezione per specificare la regola in uscita, dove R1 e R2 puntano agli ultimi due segmenti intercettati dall'URL:

Figura 29. Action per la regola in uscita
Action per la regola in uscita

Se ora rilanciamo il file di test usato in precedenza, vediamo che il modulo ha eseguito la sostituzione dell'attributo nel tag <a> con l'href rimappato, come in figura:

Figura 30. Indirizzo di uscita modificato
Indirizzo di uscita modificato

La configurazione, come sempre, si trova nel web.config nella root dell'applicazione web, tale file può essere facilmente ispezionato e modificato.

Ti consigliamo anche