Importazione di regole di Apache mod_rewrite
Introduzione
Il modulo di riscrittura URL in IIS 7 e versioni successive offre una funzionalità di importazione che semplifica notevolmente il processo di conversione delle regole di Apache mod_rewrite in regole di riscrittura url IIS. In questa procedura dettagliata si usa la funzionalità Importa regole fornita nel modulo di riscrittura URL per importare diverse regole di mod_rewrite in un file di configurazione IIS. Se il modulo di riscrittura URL non è ancora stato scaricato, è possibile farlo in https://www.iis.net/downloads/microsoft/url-rewrite.
Configurare uno scenario di procedura dettagliata
Per vedere come convertire mod_rewrite regole e verificare che le regole convertite funzionino correttamente, si implementerà lo scenario comune di applicazione dei nomi host canonici per un sito Web. In questo esempio si forza l'uso di www.mysite.com
anziché mysite.com
, in modo che quando viene effettuata una richiesta che usa un nome host diverso da www.mysite.com
, è possibile reindirizzare la richiesta a un nome host canonico.
Avviare Gestione IIS e quindi fare clic su Sito Web predefinito.
Nel riquadro Azioni fare clic su Binding e aggiungere una nuova associazione HTTP per la porta 8088.
Figura 1: Aggiungere una nuova associazione
Usando Blocco note, aprire
%SystemDrive%\windows\system32\drivers\etc\hosts
e aggiungere le due righe seguenti alla fine del file:127.0.0.1 www_mysite_com 127.0.0.1 mysite_com
Si noti che si usa "_" anziché "." per i separatori di dominio. Ciò impedisce al Web browser di tentare di risolvere il nome di dominio usando un server DNS (Domain Name System).
Salvare il file hosts.
Verificare che i nomi host siano stati configurati correttamente aprendo un Web browser e passando ai siti
http://www_mysite_com/iisstart.htm
e ahttp://mysite_com/iisstart.htm
.
Convertire le regole di mod_rewrite
Le regole di Apache mod_rewrite da usare per applicare i nomi host canonici sono:
#For sites running on a port other than 80:
RewriteCond %{HTTP_HOST} !^www_mysite_com [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{SERVER_PORT} !^80$
RewriteRule ^/(.*) http://www_mysite_com:%{SERVER_PORT}/$1 [L,R]
#And for a site running on port 80
RewriteCond %{HTTP_HOST} !^www_mysite_com [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/(.*) http://www_mysite_com/$1 [L,R]
Per convertire queste regole in un formato specifico per la riscrittura dell'URL IIS:
Avviare Gestione IIS.
A sinistra, nel riquadro Connessione ions selezionare Sito Web predefinito.
A destra, in Visualizzazione funzionalità fare clic su Riscrittura URL.
Figura 2: Fare clic su Riscrittura URL
A destra, nel riquadro Azioni fare clic su Importa regole.
Copiare l'esempio mod_rewrite regole precedenti e incollarle nella casella di testo Riscrivi regole .
Figura 3: Regole da importare
La scheda Visualizzazione albero della casella Regole convertite mostra immediatamente il risultato della conversione. È anche possibile fare clic sulla scheda Visualizzazione XML per vedere come vengono archiviate le regole nel file Web.config.
Figura 4: Regole convertite
Se si torna a Visualizzazione albero e si seleziona un nodo in tale posizione, verrà evidenziata la direttiva della regola di mod_rewrite corrispondente nella casella di testo Riscrivi regole .
Figura 5: Visualizzazione albero
Si noti che durante la conversione delle regole alle regole sono stati assegnati nomi predefiniti. Per modificare i nomi predefiniti in modo più significativo, selezionare una regola in Visualizzazione albero, fare clic con il pulsante destro del mouse e scegliere Rinomina dal menu di scelta rapida.
Figura 6: Rinominare
Modificare il nome della prima regola da ImportedRule1 in Reindirizzamento a www_mysite_com:non-80. Modificare il nome della seconda regola da ImportedRule2 in Reindirizzamento a www_mysite_com:80.
Nel riquadro Azioni fare clic su Applica per salvare le regole convertite nel file Web.config e quindi fare clic su Torna alle regole.
Figura 7: Torna alle regole
Testare le regole convertite
Per verificare che le regole importate dal formato mod_rewrite funzionino correttamente, aprire un Web browser e passare a uno degli URL seguenti:
http://localhost/iisstart.htm
http://mysite_com/iisstart.htm
In entrambi i casi, il Web browser viene reindirizzato a http://www_mysite_com/iisstart.htm
.
Inoltre, se si prova uno di questi URL:
http://localhost:8088/iisstart.htm
http://mysite_com:8088/iisstart.htm
Il Web browser viene reindirizzato a http://www_mysite_com:8088/iisstart.htm
.
Si noti che le regole importate da mod_rewrite hanno abilitato l'applicazione dei nomi host canonici per un sito Web. Una ricerca Bing rivelerà altri esempi di regole di Apache mod_rewrite.
Dichiarazione di non responsabilità
IMPORTANTE: il modulo di riscrittura URL tenta di convertire le regole di Apache mod_rewrite in regole di riscrittura url IIS equivalenti a livello funzionale. Tuttavia, non tutte le regole di mod_rewrite possono essere convertite a causa delle differenze architetturali tra Apache e IIS. È consigliabile studiare un set di regole mod_rewrite finché non si comprende la funzionalità prima di iniziare il processo di conversione. Dopo la conversione in regole di riscrittura url IIS, esaminare e testare il risultato della conversione per assicurarsi che il set di regole di riscrittura IIS corrispondente fornisca la stessa logica di riscrittura URL.
Si noti che è possibile convertire solo le regole che seguono la sintassi di Apache mod_rewrite. Qualsiasi altro formato di regole di riscrittura (ad esempio, ISAPI_Rewrite, Riscrittura ISAPI, IISRewrite e altri) non viene riconosciuto o convertito in modo non corretto.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per