L'accettazione di www.dominio.tld e dominio.tld sembrerebbe quindi logica, ma presenta un problema di indicizzazione: i contenuti duplicati per via dell'intercambiabilità dei nomi di dominio, a cui si vanno ad aggiungere tutti gli altri sottodomini che si riferiscono allo stesso spazio web. I contenuti duplicati riducono la visibilità sui motori di ricerca, perché sono percepiti come spam, ossia eccessiva pubblicazione di contenuti uguali.
Per evitare la riduzione di visibilità, uno dei trucchi più comuni è il redirect forzato alla versione più estesa, ossia www.dominio.tld. Il modulo mod_rewrite di Apache risolve il compito con disarmante facilità, a livello di spazio web nel file /.htaccess:
Codice:
RewriteEngine On RewriteCond %{HTTP_HOST} !^www\.dominio\.tld [NC] RewriteCond %{HTTP_HOST} !^$ RewriteRule ^/(.*) http://www.dominio.tld/$1 [L,R]
La riga RewriteCond %{HTTP_HOST} !^www\.dominio\.tld [NC] esamina la variabile di server Apache HTTP_HOST e si imposta a true (vero), se non contiene www.dominio.tld, e il parametro [NC] indica che il caso di lettere è indifferente. In aggiunta esamina la riga successiva, RewriteCond %{HTTP_HOST} !^$, dove il nome host non deve essere vuoto, e se entrable le condizioni sono vere, allora genera un redirect con codice 302 a http://www.dominio.tld/$1 e termina l'evalutazione di .htaccess. La variabile $1 contiene i dati raccolti in (.*) della regola.
Il comando RewriteCond è per valore predefinito congiuntivo (AND) con la prossima condizione, a meno che non si aggiunge il parametro finale [OR]. Il parametro [L] indica che la regola è l'ultima, se la condizione è stata soddisfatta, per cui è essenziale mettere i redirect globali quanto prima nel file .htaccess.
Una versione altrettanto usata è:
Codice:
RewriteEngine On RewriteCond %{HTTP_HOST} !^www\.dominio\.tld [NC] RewriteRule ^(.*) http://www.dominio.tld/$1 [R,L]
Se si desidera generare un codice redirect permanente (codice 301), che è meglio per indicizzare bene il sito e senza perdita di riferimenti, allora è necessario aggiungerlo nella regola, come ad esempio:
Codice:
RewriteEngine On RewriteCond %{HTTP_HOST} !^www\.dominio\.tld [NC] RewriteRule ^(.*) http://www.dominio.tld/$1 [R=301,L]