Cómo y por que redirigir tráfico web del dominio raíz al subdominio www (o viceversa)

Escrito por el , actualizado el .
planeta-codigo software software-libre web
Enlace permanente Comentarios

La redirección del dominio raíz al subdominio es una de las cosas básicas que es recomendable realizar en todo dominio, para ello hay que añadir algo de configuración propia de cada servidor para realizar la redirección. Junto con usar el uso del protocolo HTTPS y forzar su uso con otra redirección mejoraremos el SEO y evitaremos penalizaciones por contenido duplicado.

HTML

El nombre de un dominio está formado por varios subdominios separados por un caracter punto. Están los dominios de nivel superior, los genéricos y más antiguos .com, .org, .info, .net, los propios de cada país o territoriales .es, .fr, .de y más recientemente un montón de nuevos dominios de nivel superior (.futbol, .arte, .blog, .madrid, …) aunque significativamente más caros. Después del dominio de nivel superior está el subdominio de la empresa, marca o personal, por ejemplo, empresa.com que es realmente lo que compramos cuando solicitamos registrar un dominio. En nuestro dominio empresa.com podemos administrar múltiples subdominios los clásicos son www.empresa.com para el servidor web, smpt.empresa.com para el correo electrónico, ftp.empresa.com para la transferencia de archivos y otros cualesquiera que deseemos.

En el caso del tráfico web debemos evitar que el servidor y la página o aplicación sea accedida por empresa.com y www.empresa.com ya que los buscadores tratarán a la página como dos diferentes y posiblemente detectando contenido duplicado que afectará negativamente o penalizando al SEO de la web. Lo que se suele hacer es hacer una redirección permanente (cuyo código de estado HTTP para la respuesta es 301) a nivel de servidor que redirija el tráfico de empresa.com a www.empresa.com cuando el usuario acceda con su navegador con la primera.

Esta es una de las cosas básicas que debemos realizar cuando instalemos un servidor web, otras cosas recomendadas para mejorar el SEO y la seguridad de los usuarios es configurar el servidor web para usar el protocolo seguro HTTPS y configurar el servidor web para forzar el uso de HTTPS también haciendo una redirección cuando la petición use el protocolo no cifrado HTTP entre otras cosas que indico en la serie web.

Dependiendo del servidor web que utilicemos la configuración a añadir para hacer la redirección será distinta, a continuación indicaré como hacerlo en dos de los servidores web más populares como son Nginx y Apache HTTPD.

Nginx

Usando Docker y el archivo de configuración completo podemos probar que funciona en local sin necesidad de instalar o cambiar la configuración de Nginx si tenemos instalado su paquete.

1
2
$ docker run --rm -p 80:80 -v `pwd`/nginx.conf:/etc/nginx/conf.d/default.conf:ro nginx:alpine

docker-run-nginx.sh
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
server {
    listen       80;
    server_name  localhost;

    return 301 http://www.$host$request_uri;
}

server {
    listen       80;
    server_name  www.localhost;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
}
nginx.conf

Dominio antes de acceder al sitio Dominio después de acceder al sitio

Dominio antes y después de acceder al sitio con Nginx

Apache

1
2
$ docker run --rm -p 80:80 -v `pwd`/httpd.conf:/usr/local/apache2/conf/httpd.conf:ro httpd:alpine

docker-run-httpd.sh
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
...

ServerName www.localhost

<VirtualHost *:80>
   ServerName localhost
   RewriteEngine On
   RewriteCond %{HTTPS} off
   RewriteRule (.*) http://www.%{SERVER_NAME}$1 [R,L]
</VirtualHost>

<VirtualHost *:80>
   ServerName www.localhost
   DocumentRoot /usr/local/apache2/htdocs
</VirtualHost>
httpd.conf

Dominio antes de acceder al sitio Dominio después de acceder al sitio

Dominio antes y después de acceder al sitio con Apache HTTPD

Si prefieriesemos hacer la redirección al revés, del subdominio www al dominio, variaríamos los valores de los nombres del servidor y los valores de las directivas de redirección. En los enlaces de referencia se incluye un ejemplo de esta configuración.

Terminal

El código fuente completo del ejemplo puedes descargarlo del repositorio de ejemplos de Blog Bitix alojado en GitHub.

Referencia:


Comparte el artículo: