Uso del modulo di riscrittura URL

di Ruslan Kashšev

Informazioni sul modulo di riscrittura URL

Microsoft URL Rewrite Module 2.0 for IIS 7 e versioni successive consente agli amministratori IIS di creare potenti regole personalizzate per eseguire il mapping degli URL delle richieste agli URL descrittivi che sono più facili da ricordare e più facili da trovare per i motori di ricerca. È possibile usare il modulo Di riscrittura URL per eseguire attività di manipolazione url, alcune delle quali includono:

  • Definire regole avanzate per trasformare URL complessi in indirizzi Web semplici e coerenti.
  • Sostituire facilmente gli URL dell'applicazione Web per produrre risultati descrittivi per l'utente e il motore di ricerca.
  • Riscrivere gli URL in base alle intestazioni HTTP e alle variabili del server IIS.
  • Eseguire reindirizzamenti, inviare risposte personalizzate o arrestare richieste HTTP in base alla logica espressa nelle regole di riscrittura.
  • Controllare l'accesso al contenuto del sito Web in base ai segmenti di URL o ai metadati delle richieste.

Il modulo di riscrittura URL è disponibile sia come download che è possibile installare nel proprio server IIS e nella piattaforma cloud Siti Web di Microsoft Azure.

Funzionalità di riscrittura URL 2.0

Il modulo Microsoft URL Rewrite 2.0 include le funzionalità principali seguenti:

  • Motore di riscrittura url basato su regole. Le regole di riscrittura definiscono la logica usata per analizzare gli URL delle richieste ed eseguirne il mapping agli URL di rewite quando l'URL della richiesta corrisponde a una regola definita. Gli amministratori del server Web e del sito possono usare set di regole di riscrittura per definire la logica di riscrittura URL.
  • Criteri di ricerca di espressioni regolari. Le regole di riscrittura possono usare la sintassi delle espressioni regolari per la corrispondenza dei criteri come definito in ECMA-262.
  • Corrispondenza dei criteri con caratteri jolly. Le regole di riscrittura possono usare la sintassi con caratteri jolly per la corrispondenza dei criteri.
  • Regole di riscrittura globali e distribuite. La riscrittura URL usa regole globali per definire la logica di riscrittura url a livello di server. Queste regole vengono definite all'interno del file applicationHost.config e sostituisce le regole configurate a livelli inferiori nella gerarchia di configurazione. Il modulo usa anche regole distribuite per definire la logica di riscrittura URL specifica per un ambito di configurazione specifico. Questo tipo di regola può essere definito in qualsiasi livello di configurazione usando i file Web.config.
  • Accesso alle variabili del server e alle intestazioni HTTP. Le variabili del server e le intestazioni HTTP forniscono informazioni aggiuntive sulle richieste HTTP correnti. Queste informazioni possono essere usate per configurare regole di riscrittura o per comporre l'URL di output.
  • Varie azioni delle regole. Anziché riscrivere un URL, una regola può eseguire altre azioni, ad esempio rilasciare un reindirizzamento HTTP, interrompere la richiesta o inviare un codice di stato personalizzato ai client HTTP.
  • Supporto per la modalità kernel IIS e la memorizzazione nella cache dell'output in modalità utente. La memorizzazione nella cache dell'output iis offre miglioramenti significativi delle prestazioni per le applicazioni Web. Il modulo di riscrittura URL è completamente compatibile con entrambi i tipi di memorizzazione nella cache dell'output. Ciò significa che è possibile memorizzare nella cache le risposte in modo sicuro per gli URL riscritti e quindi migliorare le prestazioni delle applicazioni Web che si basano sulla riscrittura degli URL.
  • Funzioni di manipolazione delle stringhe. Le funzioni di manipolazione delle stringhe predefinite possono essere usate per convertire gli URL in lettere minuscole e per eseguire la codifica e la decodifica degli URL.
  • Riscrivere le mappe. Una mappa di riscrittura è una raccolta arbitraria di coppie nome-valore. È possibile usare una mappa di riscrittura all'interno di regole di riscrittura per generare l'URL di sostituzione. Le mappe di riscrittura sono particolarmente utili quando si dispone di un ampio set di regole di riscrittura, che usano tutte stringhe statiche (ad esempio, non sono stati usati criteri di ricerca). In questi casi, invece di definire un ampio set di regole di riscrittura semplici, è possibile inserire tutti i mapping tra nella mappa di riscrittura usando l'URL di input come chiave e l'URL di sostituzione come valore. È quindi possibile avere una regola di riscrittura che fa riferimento alla mappa di riscrittura per cercare l'URL di sostituzione in base all'URL di input.
  • Supporto di Traccia richieste non riuscite. La traccia delle richieste non riuscite di IIS può essere usata per risolvere gli errori relativi alla riscrittura degli URL.
  • Modelli di regola. Un modello di regola è un'estensione per l'interfaccia utente del modulo di riscrittura URL che semplifica la creazione di regole di riscrittura per una determinata attività. Il modulo include 3 modelli di regola e supporta anche il plug-in qualsiasi numero di modelli personalizzati.
  • Interfaccia utente (UI) per testare modelli di espressioni regolari e caratteri jolly. Un'interfaccia utente per il test dei modelli di regola viene fornita con il modulo . Usando l'interfaccia utente, è possibile controllare rapidamente i risultati di un'espressione regolare o di un criterio con caratteri jolly in una regola di riscrittura. È anche possibile usare l'interfaccia utente per la risoluzione dei problemi e il debug relativi alla corrispondenza dei criteri.
  • Interfaccia utente per la gestione delle regole di riscrittura e riscrittura delle mappe. È possibile aggiungere, rimuovere e modificare le regole di riscrittura e riscrivere le mappe usando il modulo di riscrittura URL di Gestione IIS.
  • Interfaccia utente per l'importazione di regole di mod_rewrite. Il modulo di riscrittura URL include un'interfaccia utente per la conversione delle regole di riscrittura dal formato mod_rewrite in un formato IIS.

Dove ottenere il modulo di riscrittura URL

Per altre informazioni e per scaricare il modulo, vedere la home page dell'estensione di riscrittura URL.

Aggiornamento dalla versione Go Live

Se è già installata la versione Go Live del modulo di riscrittura URL, il pacchetto di installazione lo aggiornerà all'URL Riscrivere la versione 2.0. Tutte le regole di riscrittura nei file ApplicationHost.config e Web.config verranno mantenute.

aggiornamento ASP.NET

Il pacchetto del programma di installazione del modulo di riscrittura URL include un aggiornamento ASP.NET che corregge ASP.NET bug specifici del modulo di riscrittura URL. In particolare, l'aggiornamento contiene correzioni per i bug seguenti:

  1. L'operatore ~ in ASP.NET controllo server Web viene risolto in modo non corretto quando si usa la riscrittura URL.
  2. ASP.NET proprietà SiteMap.CurrentNode restituisce null quando la mappa della mappa contiene URL virtuali.

L'aggiornamento viene applicato solo se il computer in cui è installato il modulo di riscrittura URL ha .NET Framework versione 3.5 SP1 o successiva. Se si installa la versione richiesta di .NET Framework dopo aver installato il modulo Di riscrittura URL, è possibile applicare l'aggiornamento ASP.NET eseguendo il programma di installazione del modulo di riscrittura URL e quindi selezionando l'opzione Ripristina nella finestra di dialogo del programma di installazione.

Per altri dettagli su questi e altri problemi di ASP.NET correlati alla riscrittura url, vedere Riscrittura URL per Web Forms ASP.NET.

Uso del modulo

Questi articoli illustrano le funzionalità del modulo di riscrittura URL e spiegano come usarlo per implementare scenari comuni di riscrittura url.

Apprendimento delle nozioni di base

Riferimenti e indicazioni

Procedura dettagliata video

Modifiche dalla versione Go Live

Le aggiunte, le modifiche e le correzioni importanti di bug sono state apportate al modulo di riscrittura URL dopo la versione Go Live:

  1. Aggiunta di funzioni di manipolazione delle stringhe UrlEncode e UrlDecode.
  2. È stato fornito l'accesso a un URL originale non elaborato tramite la variabile server UNENCODED_URL. Questa variabile server contiene ora l'URL codificato non elaborato esattamente come richiesto dal Web browser.
  3. Aggiunta dell'interfaccia utente per la configurazione delle regole di riscrittura per il routing delle richieste di applicazione.Added UI for configuring rewrite rules for Application Request Routing (ARR).
  4. Aggiunta del supporto per l'aggiornamento sul posto dalla versione Go Live del modulo di riscrittura URL.
  5. Aggiunta di funzionalità per pulire la cache interna per evitare un utilizzo eccessivo della memoria durante la memorizzazione nella cache delle regole di riscrittura.
  6. Correzione di un bug relativo alla riscrittura degli URL che contengono caratteri non ASCII.
  7. Correzione di un bug nell'elaborazione di espressioni regolari che causavano la valutazione errata degli intervalli di caratteri per i modelli senza distinzione tra maiuscole e minuscole.
  8. È stato incluso un aggiornamento per il modulo IIS FastCGI nel pacchetto del programma di installazione.
  9. È stato incluso un aggiornamento per System.Web.dll nel pacchetto del programma di installazione.
  10. È stato incluso un aggiornamento per la funzione SetUri IIS nel pacchetto del programma di installazione.

Problemi noti

  1. mod_rewrite regole che usano variabili server REQUEST_URI potrebbero non funzionare correttamente quando vengono importate tramite URL Riscrivere la funzionalità Importa regole . Per correggere l'uso delle regole importate, è possibile usare qualsiasi editor di testo per aprire il file Web.config che contiene tali regole. Individuare la <rewrite> sezione e quindi sostituire tutte le istanze della stringa "{SCRIPT_NAME}" con la stringa "{URL}".
  2. Non è possibile usare l'autenticazione digest con il modulo Di riscrittura URL.
  3. ASP.NET l'autenticazione basata su form usa l'URL riscritto per il reindirizzamento. Ad esempio, se l'URL richiesto è "/article.htm" e il modulo di riscrittura URL riscrive l'URL in "/article.aspx", protetto dall'autenticazione basata su form, ASP.NET verrà reindirizzato a "/login.aspx? ReturnUrl=%2Farticle.aspx".
  4. La modalità di rilevamento automatico nell'autenticazione ASP.NET Form usa un URL riscritto per il reindirizzamento. Ad esempio, se l'URL richiesto è "/article.htm" e il modulo di riscrittura URL riscrive l'URL in "/article.aspx", protetto dall'autenticazione basata su form, ASP.NET verrà reindirizzato a "/article.aspx? AspxAutoDetectCookieSupport=1".
  5. La modalità UseUri nell'autenticazione ASP.NET Form usa l'URL riscritto per il reindirizzamento. Ad esempio, se l'URL richiesto è "/article.htm" e il modulo di riscrittura URL riscrive l'URL in "/article.aspx", protetto dall'autenticazione basata su form, ASP.NET verrà reindirizzato a "/(S(vy2ebt45imfkmjwboow3l55))/article.aspx".
  6. ASP.NET riscrive l'URL originale quando si usa l'autenticazione basata su URI o lo stato della sessione senza cookie. Ad esempio, quando viene effettuata una richiesta a "/(S(vy2ebt45imfkmjwboow3l55)))/article.htm" e il modulo di riscrittura URL riscrive "/article.htm" in "/article.aspx", ASP.NET riscriverà l'URL in "/article.htm", che potrebbe generare un errore "404 - File Non trovato".
  7. Il modulo IIS DefaultDocument può essere reindirizzato a un URL riscritto quando il modulo di riscrittura URL viene riscritto in una cartella. Ad esempio, se l'URL di sostituzione in una regola di riscrittura è "/folder1/folder2" e queste cartelle esistono nel file system e hanno un documento predefinito configurato, il modulo DefaultDocument reindirizzerà i client Web a "/folder1/folder2/", esponendo così l'URL riscritto. Per evitare che ciò accada, usare "/" alla fine dell'URL di sostituzione durante la riscrittura in una cartella, ad esempio "/folder1/folder2/"