Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questa sezione della documentazione si applica al modulo di riscrittura URL versione 2.0 per IIS 7.
Questa procedura dettagliata illustra come usare il modulo di riscrittura URL v 2.0 per impostare le intestazioni di risposta HTTP.
Prerequisiti
Questa procedura dettagliata richiede i prerequisiti seguenti:
- IIS 7 o versione successiva con servizio ruolo ASP.NET abilitato;
- Il modulo URL Rewrite 2.0 Release Candidate installato;
- Procedura dettagliata completata in Proxy inverso con riscrittura URL v2 e Routing delle richieste dell'applicazione.
Introduzione
URL Rewrite Module 2.0 fornisce il supporto per la riscrittura basata su regole delle intestazioni HTTP di risposta. Uno scenario di utilizzo molto comune per impostare le intestazioni di risposta consiste nel modificare la risposta di reindirizzamento generata da un'applicazione dietro un servizio di bilanciamento del carico o un proxy inverso. Ad esempio, quando un'applicazione dietro un proxy inverso restituisce una risposta di reindirizzamento, l'intestazione Percorso HTTP nella risposta potrebbe non rappresentare l'indirizzo internet, ma piuttosto un indirizzo interno dell'applicazione. Url Rewrite Module 2.0 può essere usato nel server proxy inverso per modificare l'intestazione Location nella risposta. Lo scenario è rappresentato nel diagramma seguente:
- Un client HTTP effettua una richiesta a una pagina
http://www.contoso.com/webmail/oldpage.aspxWeb. - Il server proxy inverso usa URL Rewrite 2.0 e Application Request Routing per inoltrare la richiesta a un server di contenuto interno in base al nome della cartella nel percorso URL richiesto. Ad esempio,
http://webmail/oldpage.aspx; - L'applicazione Web in esecuzione nel server del contenuto genera una risposta di reindirizzamento (HTTP/1.1 301) che punta un client HTTP a
http://webmail/newpage.aspx; - Il server proxy inverso usa URL Rewrite 2.0 per sostituire il percorso di reindirizzamento basato su interno nella risposta con il percorso di reindirizzamento basato su Internet:
http://www.contoso.com/webmail/newpage.aspx.
Configurazione di uno scenario di guida passo-passo
Per configurare lo scenario della procedura dettagliata, completare la procedura dettagliata sul proxy inverso con URL Rewrite v2 e Application Request Routing. Al termine della procedura dettagliata, dovresti avere un sito web proxy inverso che instrada le richieste a due applicazioni di contenuto: webmail e payroll.
Per questa procedura dettagliata, è necessario aggiungere una logica di reindirizzamento all'applicazione webmail. In uno scenario reale, che probabilmente sarebbe un reindirizzamento avviato dal codice dell'applicazione Web, ma, per semplicità, in questa procedura dettagliata si userà una regola di reindirizzamento nel modulo di riscrittura URL.
Creare un file denominato web.config nella cartella seguente:
%SystemDrive%\inetpub\webmailAprire il file in un editor di testo, incollare il codice XML seguente all'interno e quindi salvare il file:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="Redirect" stopProcessing="true"> <match url="^index\.aspx$" /> <action type="Redirect" url="default.aspx" /> </rule> </rules> </rewrite> </system.webServer> </configuration>Si tratta di una regola che reindirizzerà tutte le richieste di index.aspx a default.aspx.
Aprire ora un Web browser e effettuare una richiesta http://localhost/webmail/index.aspx. Si noti che il browser è stato reindirizzato a http://localhost:8081/default.aspx, che è fondamentalmente un URL interno usato dall'applicazione Webmail Web. A questo punto si configureranno le regole di riscrittura URL per modificare l'intestazione Percorso HTTP nelle risposte di reindirizzamento HTTP in modo che il browser venga reindirizzato a un URL appropriato: http://localhost/webmail/default.aspx.
Modifica della regola in ingresso per mantenere l'intestazione host
Per poter modificare l'intestazione Location HTTP, è necessario preservare il valore originale dell'intestazione host HTTP. La regola di riscrittura in uscita usa il valore conservato durante la modifica della risposta. Per mantenere il valore originale, archiviarlo in una variabile del server temporanea ORIGINAL_HOST.
- Nella pagina principale della visualizzazione delle funzionalità di riscrittura URL selezionare Visualizza variabili del server nel riquadro Azioni a destra:
- Nella pagina Variabili server consentite selezionare Aggiungi e quindi immettere il nome della variabile server che verrà usata per archiviare temporaneamente il valore dell'intestazione host HTTP. Ad esempio, ORIGINAL_HOST:
- Selezionare OK per salvare le modifiche e quindi tornare alla pagina principale della visualizzazione delle funzionalità di riscrittura URL. Successivamente, selezionare la regola in ingresso "Proxy inverso alla posta Web" e selezionare Modifica.
- Nella pagina Modifica regola in ingresso espandere la casella di gruppo "Variabili server"; selezionare quindi Aggiungi e immettere "ORIGINAL_HOST" per il nome della variabile del server e "{HTTP_HOST}" per "Valore":
Creazione di una regola in uscita per modificare l'intestazione della risposta HTTP
A questo punto si creerà una regola di riscrittura in uscita che riscrive l'intestazione Percorso HTTP nelle risposte di reindirizzamento per aggiungere nuovamente la cartella dell'applicazione al percorso URL e sostituire il nome host.
- Nella pagina principale della visualizzazione delle funzionalità di riscrittura URL selezionare "Aggiungi regole" e quindi selezionare "Regola vuota" nella categoria "Regole in uscita".
- Nella pagina "Modifica regola in uscita", denominare la regola "Riscrivi intestazione di localizzazione".
- Nell'elenco a discesa "Pre-condizione" scegliere "<Crea nuova condizione preliminare>".
- Nella finestra di dialogo "Aggiungi condizione preliminare" denominare la pre-condizione come "IsRedirection"
- Selezionare "Aggiungi" e quindi immettere {RESPONSE_STATUS} come input della condizione e "3\d\d" come modello. Questa pre-condizione viene usata per verificare se la risposta ha un codice di stato di reindirizzamento, ad esempio 301, 302, 307 e così via. La finestra di dialogo di pre-condizione dovrebbe essere simile alla seguente:
- Selezionare OK per tornare alla pagina Modifica regola in uscita .
- Nella casella Gruppo di corrispondenze usare l'elenco a discesa Ambito corrispondente per selezionare Variabile server.
- Immettere RESPONSE_Location per "Nome variabile" e "^http://[^/]+/(.*)" per "Pattern". In questo modo la regola viene configurata per operare sull'intestazione HTTP di risposta "Location" e trovarne la corrispondenza con un modello regex che archivia il percorso URL in un back-reference.
- Espandere la casella di gruppo "Condizioni", selezionare "Aggiungi" e immettere {ORIGINAL_HOST} come input della condizione e ".+" come modello di condizione. Questa condizione controlla se la variabile del server temporanea ORIGINAL_HOST esiste e ha un valore non vuoto.
- Selezionare Aggiungi ancora una volta e aggiungere un'altra condizione. Impostare l'input della condizione su {URL} e il modello su "^/(webmail|payroll)/.*". Questa espressione regolare viene usata per trovare le corrispondenze con i percorsi URL che iniziano con /webmail o /payroll. Inoltre, la parentesi all'interno del criterio acquisisce la parte della stringa URL corrispondente, in modo che possa essere riutilizzata durante la costruzione dell'URL di sostituzione.
- Infine, nella casella di gruppo "Azione" scegliere l'azione "Riscrivi" e immettere "
http://{ORIGINAL_HOST}/{C:1}/{R:1}" come valore. Questa azione sostituisce il valore dell'intestazione Location HTTP con una stringa costruita usando il nome host della variabile server, il back-reference della condizione che contiene il prefisso della cartella del percorso URL e il back-reference della regola che contiene il percorso URL corrente per la nuova intestazione Location.
La pagina completa dovrebbe essere simile alla seguente:
Verifica della regola
Per verificare che le regole funzionino correttamente, aprire un Web browser e effettuare una richiesta a http://localhost/webmail/index.aspx. Il browser dovrebbe essere reindirizzato a http://localhost/webmail/default.aspx:
Sommario
In questa procedura dettagliata:
- Si è appreso come usare diverse nuove funzionalità in URL Rewrite 2.0 per implementare uno scenario di proxy inverso completamente funzionante.
- È stata configurata la regola in ingresso per inoltrare le richieste a un server di contenuto back-end e impostare una variabile server temporanea.
- È stata quindi definita una regola in uscita che modifica l'intestazione HTTP Location nella risposta di reindirizzamento generata dal server di contenuto back-end dell'applicazione Web.