IIS URL Rewrite: redirect di più nomi di dominio su un singolo hostname

IIS URL Rewrite: redirect di più nomi di dominio su un singolo hostname

Una delle pratiche più importanti e consigliate a livello di Search Engine Optimization (SEO) è il rispetto della cosiddetta Unique page URLs rule, ovvero la regola per cui ciascuna pagina del proprio sito web deve avere una e una sola URL di accesso. Questa regola vale anche per le home page, il che obbliga, nel caso in cui si abbiano a disposizione molteplici domini e alias (ryadel.com, www.ryadel.com, ryadel.net, www.ryadel.net, ryadel.org, www.ryadel.org e così via), a sceglierne uno soltanto per servire i propri contenuti, impostando dei redirect puntuali su tutti gli altri.

Il redirect di cui abbiamo bisogno è, ovviamente, un HTTP 301 - permanent, che può essere ottenuto in due modi: facendo gestire i domini da reindirizzare al proprio provider, che molto spesso fornisce la possibilità di impostare dei redirect più o meno puntuali, oppure configurandoli sull'IP del proprio web server e impostando i redirect tramite il proprio servizio di pubblicazione web (IIS, Apache o altri). La prima opzione è una scelta obbligata nel caso in cui non abbiate modo accesso al web server, come nel caso dei servizi di domain hosting presso provider come Aruba; in tutti gli altri casi vale senz'altro la pena di scegliere la seconda opzione, che proveremo a sviluppare in questo articolo.

URL Rewrite tool

Se utilizzate IIS 7.0 o versioni superiori potete beneficiare del potente strumento denominato URL Rewrite, scaricabile gratuitamente a questo indirizzo oppure tramite la Microsoft Web Platform. La versione più recente è la 2.0, ma il funzionamento è grossomodo identico a quello delle versioni precedenti. Potete controllare la corretta installazione del componente aprendo l'interfaccia di amministrazione di IIS e verificando la presenza dell'icona denominata URL Rewrite.

 

iis-url-rewrite

 

A questo punto la scelta è se utilizzare l'interfaccia grafica oppure modificare manualmente il web.config del proprio sito: personalmente consiglio di scegliere la seconda opzione, in quanto la sintassi da utilizzare per impostare le regole, oltre ad essere molto semplice (nonché ottimamente documentato da Microsoft), consente di ottenere una versatilità maggiore.

Create, se non esiste già, una sezione <system.webServer>  e al suo interno inserite il seguente codice, sostituendo YOURSITE con l'hostname del vostro sito e OTHERSITE1, OTHERSITE2 con eventuali altri domini che volete includere nel reindirizzamento.

Ovviamente, la regola di cui sopra vale nel caso in cui vogliate reindirizzare tutti i domini indicati (e relative estensioni) su www.YOURSITE.com.

Vediamo in dettaglio cosa abbiamo fatto: la regola è configurata per utilizzare un pattern di ricerca di tipo ECMAScript (riga 4), che ci consente di utilizzare la sintassi delle Regular Expression. In tal modo possiamo definire degli input pattern estremamente versatili (righe 7, 8, 9 e 10) che saranno confrontati singolarmente con l'HTTP_HOST specificato dalla request seguendo una condizione di tipo MatchAny (riga 6): questo significa che il redirect avrà luogo se almeno uno di loro risultasse compatibile con l'HTTP_HOST del richiedente.

Analizziamo ora i singoli input pattern: come già detto, sono tutti configurati per prendere in considerazione il campo header HTTP_HOST, una stringa che contiene il domain name a cui si riferisce la richiesta.

  • Il primo (riga 7) controlla se il domain name della request è YOURSITE.com, senza il www iniziale.
  • Il secondo (riga 8) controlla i domain name, con o senza www, ha estensione .net, .org, .eu oppure .it: ovviamente potete anche aggiungere le estensioni relative ad eventuali altri domini sui quali volet attivare il redirect.
  • Il terzo (riga 9) controlla se il domain name, con o senza www, appartiene al dominio OTHERSITE1: in questo caso l'elenco di estensioni include anche il .com.
  • Il quarto (riga 10) è analogo al precedente, relativo però a OTHERSITE2.

ISAPI Rewrite 3

Nel caso in cui il vostro web server monti una versione di IIS antecedente alla 7, non potrete disporre del tool URL Rewrite: per ottenere un risultato analogo potete installare il software  ISAPI Rewrite 3 della HeliconTech. Per istruzioni su come installarlo e configurarlo, consultate questa pagina. Fatto questo, create un file .htaccess nella directory principale del sito web e inserite il seguente contenuto:

MOD_Rewrite

Nel caso in cui vogliate impostare lo stesso comportamento con un web server Apache potete utilizzare il modulo mod_rewrite e configurarlo utilizzando la stessa sintassi descritta per ISAPI Rewrite 3: quest'ultimo strumento è sostanzialmente un porting per Windows/IIS del primo, mirando ad avere una compatibilità quasi totale a livello di sintassi.

Per il momento è tutto: felice redirect!

About Ryan

IT Project Manager, Web Interface Architect e Lead Developer di numerosi siti e servizi web ad alto traffico in Italia e in Europa. Dal 2010 si occupa anche della progettazione di App e giochi per dispositivi Android, iOS e Mobile Phone per conto di numerose società italiane. Microsoft MVP for Development Technologies dal 2018.

View all posts by Ryan

One Comment on “IIS URL Rewrite: redirect di più nomi di dominio su un singolo hostname”

  1. Pingback: System.Web.HttpException (0x80004005): The application is configured to issue secure cookies - Cause e soluzioni del problema

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *


The reCAPTCHA verification period has expired. Please reload the page.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.