Quando pubblichiamo un sito web su internet, tipicamente registriamo più domini internet (.it, .com, .net, ecc.) in modo da favorire al massimo la possibilità che gli utenti raggiungano le nostre pagine.
Avere un sito che risponde a diversi URL, però, non è indicato da un punto di vista di SEO, in quanto comporta un frazionamento degli hit complessivi tra i vari indirizzi possibili, ed una best practice è quella di fare in modo che tutti questi indirizzi redirigano ad un nome di dominio standard. Questo processo, che prende il nome di URL Canonicalization, può essere implementato facilmente in IIS 7. Vediamo come.
Innanzi tutto, la situazione di partenza sarà simile a quella in figura, in cui cioè abbiamo un Site con in binding un certo numero di host, che comprenderanno i vari domini, magari nelle versioni con e senza "www.". Volendo, possiamo aggiungerne di ulteriori tramite l'opzione Bindings.

Con una simile configurazione, IIS risponde alle chiamate dirette a ognuno di questi domini, mantenendo ovviamente però invariato l'indirizzo visualizzato dal browser. Per risolvere questa problematica, possiamo sfruttare un modulo di IIS denominato URL Redirect Module, che possiamo scaricare e installare automaticamente tramite Web Platform Installer.
La configurazione può essere effettuata sia da IIS Manager che tramite web.config. Nel primo caso basta un doppio click sull'icona URL Rewrite, come in figura, per aprire una maschera tramite cui creare le nostre regole di rewrite.

Da www.testredirect.com a testredirect.com
Una volta aggiunta una nuova Blank rule, dobbiamo specificare innanzitutto quali sono gli URL che dovranno essere presi in considerazione dal modulo nell'applicare la regola. Questo tipo di impostazioni vengono indicate tramite regular expression e, nel nostro caso, utilizzeremo il pattern (.*) per gestire tutti i possibili URL.
Il secondo passo è quello di indicare, all'interno del gruppo Conditions, la condizione per cui la regola dovrà agire. Pertanto, aggiungiamo una nuova condizione da applicare alla componente host dell'URL e che verifichi che non corrisponda a quello canonico (nel nostro esempio "testredirect.com"), indicando quset'ultimo tramite una regex ^testredirect\.com$.

L'ultimo passo è quello di specificare l'azione da intraprendere (sezione Action), che in particolare sarà un Redirect di tipo Permanent verso l'indirizzo indicato in figura.

Il suffisso {R:1} e il flag Append query string fanno in modo che eventuali nomi di file o parametri di query string siano accodati al nuovo indirizzo così generato.
Questa configurazione può essere impostata anche da file web.config nella sezione system.webServer:
<system.webServer> <modules runAllManagedModulesForAllRequests="true" /> <rewrite> <rules> <rule name="RedirectRule" stopProcessing="true"> <match url="(.*)" /> <conditions> <add input="{HTTP_HOST}" pattern="^testredirect\.com" negate="true" /> </conditions> <action type="Redirect" url="http://testredirect.com/{R:1}" appendQueryString="false" /> </rule> </rules> </rewrite> </system.webServer>
Da testredirect.com a www.testredirect.com
Per effettuare il redirect inverso, è sufficiente modificare la regular expression e il redirect url nel web.config come nell'esempio in basso.
<system.webServer> <modules runAllManagedModulesForAllRequests="true" /> <rewrite> <rules> <rule name="RedirectRule" stopProcessing="true"> <match url="(.*)" /> <conditions> <add input="{HTTP_HOST}" pattern="^www\.testredirect\.com" negate="true" /> </conditions> <action type="Redirect" url="http://www.testredirect.com/{R:1}" appendQueryString="false" /> </rule> </rules> </rewrite> </system.webServer>
Dato che la nostra regola si applica a tutti gli host differenti da quello canonico, il redirect verrà effettuato automaticamente anche per tutte gli altri nomi di dominio (ad es. www.testredirect.net) che abbiamo registrato tra i bindings del Site di IIS.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare DeepSeek R1 con Azure AI
Gestire il colore CSS con HWB
Usare le navigation property in QuickGrid di Blazor
Gestire la cancellazione di una richiesta in streaming da Blazor
Ottenere un token di accesso per una GitHub App
Supporto ai tipi DateOnly e TimeOnly in Entity Framework Core
Recuperare l'ultima versione di una release di GitHub
Aggiornare a .NET 9 su Azure App Service
Gestire gli accessi con Token su Azure Container Registry
Creare una libreria CSS universale: Clip-path
Creare una libreria CSS universale: Immagini
Creare una libreria CSS universale: Cards