Skip to main content

Redirect 301 con IIS

Recentemente abbiamo ripreso in mano la gestione di IIS, il web server di casa Microsoft installato di default sui sistemi operativi server Windows. Era passato qualche tempo da quando ci era servito di gestirlo in maniera approfondita, ed è una piacevole occasione di rinfrescare le nozioni e di scoprire qualcosa di nuovo.

Ad esempio, non mi era mai capitato di dover fare un redirect 301 con IIS. Ecco cosa ho imparato.

Redirect 301

Per chi non lo sapesse, il “redirect 301” (termine del tutto informale) si riferisce a un codice di errore che viene restituito da un web server quando una certa risorsa è stata permanentemente spostata.

Facciamo un esempio. Diciamo che un sito viene riorganizzato, e la pagina

/contatti.html

viene spostata nella sottocartella “azienda”, quindi diventa accessibile come

/azienda/contatti.html

Se non faccio nient’altro che spostare la pagina, chiunque cerchi di raggiungere la pagina precedente otterrà semplicemente un codice http 404: pagina non trovata. Questo non è bello, soprattutto se la pagina precedente era già ben indicizzata nei motori di ricerca: sarebbe preferibile che l’utente venga invece redirezionato alla nuova pagina.

Il codice http 301 serve proprio a questo: al browser che richiede la pagina si risponde “guarda che la pagina è stata spostata” e gli si fornisce la nuova posizione.

Metodi per il redirect

Esistono diversi modi di attivare questa forma di redirect.

Se la pagina da redirezionare era di tipo dinamico (ad esempio ASP o PHP) si possono usare dei metodi propri di tali linguaggi di programmazione. Ad esempio, una pagina contatti.php verrebbe svuotata del suo contenuto e riempita solo con il comando PHP header (vi rimando ad altri siti per l’approfondimento di questi metodi).

Con il server web Apache, il redirect può essere realizzato tramite istruzioni specifiche nel file .htaccess che usano il mod_rewrite, con qualcosa tipo:

RewriteRule /contatti.html /azienda/contatti.html [R=301,L]

Questa forma, unita alla potenza delle espressioni regolari, rende molto facile un caso classico di redirect di un intero sito, ad esempio fare in modo che tutte le chiamate a pagine di www.telaietto.it finiscano alle relative pagine su www.iltelaietto.it:

RewriteCond %{HTTP_HOST} ^telaietto\.it$ [NC]
RewriteRule ^(.*)$ http://www.iltelaietto.it/$1 [R=301,L]

Ma su IIS?

Redirect su IIS

Grazie a questo utilissimo articolo ho scoperto che nella configurazione di ciascun sito è possibile definire che tale sito deve essere redirezionato permanentemente a un’altra risorsa:

  1. si va nelle proprietà del sito, sezione “Home Directory
  2. si imposta l’opzione “The content for this resource should come from” al valore “A redirection to a URL
  3. si imposta il campo “Redirect to” all’indirizzo completo del nuovo sito più la stringa $V$Q, che mantiene eventuali parametri passati (quindi va scritto, ad esempio,http://www.iltelaietto.it$V$Q“)
  4. per l’opzione “The client will be sent to“, si attivano entrambe le opzioni “The exact URL entered above” e “A permanent redirection for this resource

Fatto!

Quest