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 delle richieste HTTP e le variabili del server IIS.
Prerequisiti
Questa procedura dettagliata richiede i prerequisiti seguenti:
- IIS 7.0 o versione successiva con servizio ruolo ASP.NET abilitato
- URL Rewrite Module 2.0 installato
Configurazione di uno scenario di guida passo-passo
Per illustrare come usare URL Rewrite Module 2.0 per impostare le intestazioni HTTP e le variabili del server IIS, verrà implementato uno scenario in cui l'intestazione HTTP Cookie sulla richiesta è impostata in base all'URL richiesto. Si supponga, ad esempio, di disporre di un'applicazione Web che gestisce pagine Web localizzate. L'applicazione Web determina la lingua per la risposta in base al cookie HTTP nella richiesta. Il problema con questo approccio è che i motori di ricerca non indicizzaranno il contenuto localizzato di questa applicazione, perché i crawler del motore di ricerca non usano cookie HTTP e quindi solo il contenuto nella lingua predefinita verrà gestito dall'applicazione Web. Per risolvere questo problema, si decide di aggiungere informazioni sulla lingua come parte dell'URL, http://www.contoso.com/default.aspxad esempio , e quindi usare il modulo di riscrittura URL 2.0 per impostare il cookie previsto dall'applicazione Web per determinare la lingua per la risposta. Inoltre, si vuole impostare un'altra variabile server denominata ORIGINAL_URI che conterrà la stringa URI richiesta originariamente.
Per configurare lo scenario della procedura dettagliata, copiare il codice ASP.NET seguente e inserirlo nella %SystemDrive%\inetpub\wwwroot\ cartella in un file denominato language.aspx:
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>URL Rewrite Module v2 Test - Setting Server Variables</title>
</head>
<body>
<h1>Setting HTTP request header and a server variable with URL Rewrite Module v2</h1>
<p>The value of the Language cookie is <strong><%=( Request.Cookies["Language"] != null ) ? Request.Cookies["Language"].Value : "Cookie not set" %></strong></p>
<p>The originally requested URI is <strong><%= HttpUtility.HtmlEncode( Request.ServerVariables["ORIGINAL_URI"] ) %></strong></p>
</body>
</html>
Dopo aver copiato questo file, passare a http://localhost/language.aspx e verificare che il rendering della pagina sia stato eseguito correttamente in un browser.
Creazione di una regola di riscrittura
Si creerà una regola di riscrittura che riscrive gli URL usando il formato seguente:
http://localhost/<language>/anyfile.aspx
verrà riscritto come:
http://localhost/anyfile.aspx
La regola di riscrittura imposta anche due variabili del server IIS:
- HTTP_COOKIE
- ORIGINAL_URI
Si creerà una regola di riscrittura usando l'interfaccia utente di riscrittura URL in Gestione IIS.
Aprire Gestione IIS, scegliere "Sito Web predefinito" nella visualizzazione albero a sinistra e quindi aprire la funzionalità "Riscrittura URL":
Possibilità di modificare le variabili del server
Per impostazione predefinita, le regole di riscrittura distribuite (ad esempio le regole definite per siti o applicazioni Web specifiche) non possono impostare o modificare qualsiasi variabile del server IIS, a meno che la variabile del server non venga aggiunta all'elenco "Consentito". Per questa procedura dettagliata è necessario aggiungere le due variabili del server seguenti all'elenco "Variabili server consentite":
- HTTP_COOKIE
- ORIGINAL_URI
Annotazioni
L'elenco "Variabili server consentite" non è applicabile alle regole globali, definite a livello di server. Non è necessario aggiungere una variabile server all'elenco "Consentito" se tale variabile server è impostata usando una regola di riscrittura globale.
Selezionare "Visualizza variabili server..." azione dal riquadro "Azioni":
Usare l'azione "Aggiungi..." per aggiungere le variabili del server HTTP_COOKIE e ORIGINAL_URI all'elenco "Variabili server consentite":
Dopo l'aggiornamento dell'elenco "Variabili server consentite", fare clic sull'azione "Torna alle regole" per tornare alla visualizzazione elenco regole.
Definizione della mappa di riscrittura
Il passaggio successivo consiste nel definire una mappa di riscrittura che verrà utilizzata per mappare la parte dell'URL che rappresenta la lingua all'identificatore locale, il quale verrà salvato dalla regola di riscrittura nell'intestazione del cookie HTTP.
Selezionare "Visualizza riscrivi mappe..." azione nel riquadro "Azioni":
Fare clic su "Aggiungi mappa di riscrittura..." e specificare il nome della mappa come "Languages":
Questa mappa definirà i mapping tra la parte URL che rappresenta una lingua e l'identificatore delle impostazioni locali da usare quando si imposta il cookie di richiesta HTTP. Fare clic su "Modifica impostazioni mappa..." azione per specificare il valore predefinito da usare quando non è possibile trovare alcun mapping. Immettere "en_US" come valore predefinito:
Chiudere la finestra di dialogo e quindi usare l'azione "Aggiungi voce di mapping..." per aggiungere le seguenti mappature:
| Valore originale: | Nuovo valore: |
|---|---|
| fr-fr | fr_FR |
| de-de | de_DE |
| ru-ru | ru_RU |
Definizione della regola di riscrittura
Infine, si creerà una regola di riscrittura che imposta le variabili del server usando la mappa di riscrittura definita in precedenza.
Visualizzare la finestra di dialogo "Modifica regola" facendo clic sull'azione "Aggiungi regole..." nella visualizzazione delle funzionalità principale e selezionando la "Regola vuota" nella categoria "Regole in ingresso". Immettere la configurazione della regola come indicato di seguito:
Nome regola: "imposta variabili del server"
URL richiesto: "Corrisponde al modello"
Uso di: "Espressioni regolari"
Modello: "^([a-z]{2}-[a-z]{2})/(.*)"
Condizioni:
- Input: "{Languages:{R:1}}"
- Tipo: "Corrisponde ai modelli"
- Modello: "(.+)"
Azione:
- Tipo: "Riscrittura"
- Riscrittura di URL: "{R:2}"
Il modello della regola corrisponde a qualsiasi percorso URL che contiene il segmento di lingua , ad esempio http://www.contoso.com/de-de/default.aspx. Acquisisce anche il segmento di lingua e il resto del percorso URL nei back-reference della regola, in modo che possano essere riutilizzati più avanti nella regola. La condizione della regola usa il segmento di lingua acquisito in precedenza come chiave di ricerca che viene passata alla rewrite map "Languages". Il risultato della ricerca della mappa viene archiviato nel back-reference della condizione. L'azione della regola riscrive l'URL in modo che non contenga il segmento di lingua.
Espandere "Variabili server..." e specificare i valori da usare per impostare le variabili del server:
- Nome: HTTP_COOKIE, Valore: Language={C:1}
- Nome: ORIGINAL_URI, Valore: http://{HTTP_HOST}{REQUEST_URI}
Il cookie HTTP viene impostato usando il riferimento a ritroso della condizione, che contiene l'identificatore di locale ottenuto dalla mappa di riscrittura "Languages". Il valore per la variabile server ORIGINAL_URI viene compilato usando le variabili del server {HTTP_HOST} e {REQUEST_URI}.
Fare clic su "Ok" per chiudere la finestra di dialogo e quindi fare clic su "Applica" nel riquadro "Azioni" sul lato destro per salvare la regola.
Verifica della regola
Per verificare che la regola imposti correttamente il cookie e una variabile server, aprire un Web browser e richiedere l'URL seguente:
http://localhost/fr-fr/language.aspx
Si noterà che la regola di riscrittura ha impostato il cookie "Language" in base all'URL richiesto. Inoltre, la stringa URL originale è stata resa accessibile per la pagina ASP.NET tramite la variabile server "ORIGINAL_URI".