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
Aggiornare a .NET 9 su Azure App Service
Configurare lo startup di applicazioni server e client con .NET Aspire
Eseguire una ricerca avanzata per recuperare le issue di GitHub
Esportare ed analizzare le issue di GitHub con la CLI e GraphQL
Gestire i dati con Azure Cosmos DB Data Explorer
Eseguire i worklow di GitHub su runner potenziati
Generare la software bill of material (SBOM) in GitHub
Utilizzare una qualunque lista per i parametri di tipo params in C#
Usare i servizi di Azure OpenAI e ChatGPT in ASP.NET Core con Semantic Kernel
Ottimizzazione dei block template in Angular 17
Gestione dei nomi con le regole @layer in CSS
Sfruttare MQTT in cloud e in edge con Azure Event Grid
I più letti di oggi
- Simulare Azure Cosmos DB in locale con Docker
- Utilizzare il metodo Index di LINQ per scorrere una lista sapendo anche l'indice dell'elemento
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- .NET Conference Italia 2024 - Milano
- .NET Conference Italia 2023 - Milano e Online