Al redirigir un dominio a otro por DNS, no redirige el http a https y esta es la razón.

Los clientes nos piden muchas veces que redirijamos sus dominios o a otros dominios, o a otras páginas. Una manera de hacer esto es por una redirección por DNS, opción que permiten muchos alojamientos. Sin embargo no funciona en un caso:

No permite redirigir el protocolo http a https.

Y eso puede ser un problema, porque hay gente que todavía escribe http, o porque tengamos páginas indexadas con http. Hoy os explicamos por qué no funciona y cómo arreglarlo.

Por qué la redirección por DNS no permite redirigir http a https.

La razón puede explicarse de varias maneras.

  • Una redirección por DNS realmente crea un registro A de un dominio a otro. Es independiente de protocolo (no lleva el protocolo consigo).
  • Una redirección por https funciona cuando un servidor manda a otro la petición cifrada y espera que el otro le conteste, también del mismo método. Como os explicamos cuando explicamos la clave pública y privada. Es decir requiere un certificado válido en cada extremos.
    El problema es que, un dominio redireccionado por DNS carece (en origen) de certificado. Porque no se puede crear (ya que no se puede verificar), y además ya ni siquiera es válido porque el dominio apunta a otro sitio. Así que nunca hará la conexión cifrada y fallará.
    Es decir, una redirección de o a https debe partir o llegar a otro sitio con certificado. Por lo tanto necesitamos alojamientos en ambos lados, para poder instalar dichos certificados.

¿Las redirecciones por DNS son inútiles? No, cada día tiene menos sentido y uso el http sin cifrar y en muchas ocasiones no será necesario considerarlo. Pero si entra en juego, no podemos hacerlo.

¿Qué solución nos queda si queremos redireccionar un http a un https?.

Como hemos dicho, entonces tenemos que tener alojamientos y certificados en ambos sitios. Eso nos obliga a realizar la redirección o en Apache o por htaccess. Aunque lo hemos puesto en algún otro artículo, por referencia rápida os dejamos un posible código para hacerlo.

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{HTTP_HOST} ^olddomain.com$ [OR]
  RewriteCond %{HTTP_HOST} ^www.olddomain.com$
  RewriteRule (.*)$ https://newdomain.com/$1 [R=301,L]
</IfModule>