Share via


Importazione di regole di Apache mod_rewrite

di Ruslan Kashšev

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.

  1. Avviare Gestione IIS e quindi fare clic su Sito Web predefinito.

  2. Nel riquadro Azioni fare clic su Binding e aggiungere una nuova associazione HTTP per la porta 8088.

    Screenshot della finestra di dialogo Associazioni sito dopo aver fatto clic su Associazioni in Modifica sito nel riquadro Azioni.Figura 1: Aggiungere una nuova associazione

  3. 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).

  4. Salvare il file hosts.

  5. Verificare che i nomi host siano stati configurati correttamente aprendo un Web browser e passando ai siti http://www_mysite_com/iisstart.htm e a http://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:

  1. Avviare Gestione IIS.

  2. A sinistra, nel riquadro Connessione ions selezionare Sito Web predefinito.

  3. A destra, in Visualizzazione funzionalità fare clic su Riscrittura URL.

    Screenshot del riquadro Home sito Web predefinito con la riscrittura U R L selezionata.

    Figura 2: Fare clic su Riscrittura URL

  4. A destra, nel riquadro Azioni fare clic su Importa regole.

  5. Copiare l'esempio mod_rewrite regole precedenti e incollarle nella casella di testo Riscrivi regole .

    Screenshot del riquadro Import mod underscore rewrite Rules con un set di regole di riscrittura e un set di regole convertite correttamente.

    Figura 3: Regole da importare

  6. 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.

    Screenshot dell'alternanza tra visualizzazione albero e visualizzazione X M L nella sezione Regole convertite.

    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 .

    Screenshot di un nodo selezionato in Visualizzazione albero delle regole convertite.

    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.

    Screenshot del clic con il pulsante destro del mouse su una regola convertita per rinominare la regola.

    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.

    Screenshot del riquadro Azioni con Applica, Annulla e Torna alle regole evidenziate.

    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.