Dag Blog - we love

Dag Blog

Come reindirizzare URLs www a non-www e viceversa con Apache [.htaccess]

www

A volte può essere utile dover reindirizzare le richieste rivolte al dominio www.miosito.com al più semplice indirizzo miosito.com. Questo può essere utile quando si vuole migliorare il posizionamento della pagina nelle classifiche dei motori di ricerca (SEO), che a volte interpretano come sgradito duplicato, la presenza di due indirizzi che puntano ad una stessa pagina.

È utile, quindi, decidere quale forma dell’indirizzo ci piace di più, e reindirizzare tutte le richieste all’altro indirizzo, in modo che puntino a quello canonico. Per saperne di più è possibile documentarsi sulla guida messa a disposizione da Google “Perché è importante scegliere una pagina canonica”, che detta legge in merito a come rendere le pagine web più appetibili ai motori di ricerca.

Soluzione per il web-server Apache

Per attuare il re-indirizzamento si può usare un modulo di Apache chiamato mod_rewrite, il quale, una volta abilitato, può essere gestito con un piccolo file .htaccess all’interno del sito.

Abilitare il mod_rewrite su Ubuntu Se il web-server è ospitato dal sistema operativo Linux Ubuntu, per potere abilitare il modulo mod_rewrite bisogna digitare nel terminale il seguente comando di apache e successivamente riavviare il web-server:

#abilita il modulo
sudo a2enmod rewrite

#riavvia il web-server
sudo service apache2 restart

Impostazione del file .htaccess Per impostare la regola che permette di reindirizzare la richiesta, è necessario aggiungere (o modificare se non è presente) un file chiamato .htaccess ed inserire in esso quanto segue, modificando il nome/dominio del sito ( le linee che iniziano con # sono commenti e non vengono considerate da apache):

# abilita il modulo
RewriteEngine On

# toglie il www
RewriteCond %{HTTP_HOST} ^www.miosito.com$ [NC]
RewriteRule ^(.*)$ http://miosito.com/$1 [L,R=301]

Spiegazione:

  1. La prima riga abilita il modulo Rewrite
  2. si impone la condizione per cui tutte le richieste al dominio indicato vengano intercettate
  3. Si imposta la regola che re-indirizza le richieste al nuovo dominio

A titolo di esempio si riporta che la regola inversa che impone il re-indirizzamento al dominio che inizia con “www”.

# aggiunge il www
RewriteCond %{HTTP_HOST} ^miosito.com$ [NC]
RewriteRule ^(.*)$ http://www.miosito.com/$1 [L,R=301]

Questo file va posizionato nella directory principale del sito.