Eliminar www de la URL con htaccess

Si tenemos un dominio de la forma midominio.com , es muy probable que nos interese que cuando alguien (o algo) acceda a una página del tipo www.midominio.com/path (es decir con el subdominio www delante), sea redirigido a la versión sin subdominio, del tipo midominio.com/path

No nos interesa a nivel de SEO tener el mismo contenido por duplicado, con el subdominio (www) y sin el subdominio. Tampoco parece muy coherente tener el contenido por duplicado, en dos sitios, o accesible desde dos URL diferentes.

La mejor forma de resolver este problema es que, cuando alguien acceda a cualquier URL del tipo www.midominio.com/path , sea redirigido a una URL del tipo midominio.com/path . También es conveniente que al hacerlo devuelva previamente un código de estado 301, que indica a los buscadores que el contenido ha sido movido a la nueva dirección.

Podemos hacer esto utilizando un fichero .htaccess con el siguiente código:

RewriteCond %{HTTP_HOST} ^www\.midominio\.com$ [NC]
RewriteRule ^(.*)$ https://midominio.com/$1 [R=301,QSA,L]

También puede ocurrir que, por motivos de imagen, marketing o lo que sea, queramos que ocurra lo contrario: que cuando alguien acceda a una dirección del tipo midominio.com/path se lance un código de estado 301 y sea redirigido a una dirección del tipo www.midominio.com/path . Es decir que, al contrario que en el caso anterior, todas las páginas tengan el www delante.

Pues esto podríamos hacerlo con una variación del código anterior:

RewriteCond %{HTTP_HOST} ^midominio\.com$ [NC]
RewriteRule ^(.*)$ https://www.midominio.com/$1 [R=301,QSA,L]

En ambos casos tenemos que tener en cuenta que el .htaccess aplica su configuración, tanto al directorio donde lo coloquemos, como a los subdirectorios que contenga; a no ser que estos contengan otro .htaccess que modifique de nuevo la configuración.