Cómo redirigir la dirección IP al nombre de dominio en NGINX o Apache

Contenidos

Logotipo de Nginx

Es un caso extremo, pero si alguien escribe su dirección IP en lugar de su nombre de dominio, querrá que su servidor maneje esa solicitud correctamente y lo redireccione al sitio real. Le mostraremos cómo configurarlo en NGINX y Apache.

¿Por qué es esto necesario?

Para casi todas las solicitudes, es probable que los usuarios ingresen usando su nombre de dominio, por lo que verdaderamente no verá este problema en la práctica. Pero es una solución fácil y no está de más agregar.

Puede configurar su servidor para escuchar específicamente su dirección IP y devolver una redirección 301 a su nombre real, lo que solucionará el problema y colocará el nombre de su portal web en la barra de URL para cualquier solicitud de solo dirección IP.

A pesar de esto, un método mejor y más completo es simplemente manejar todas las demás rutas devolviendo una redirección. De esta manera, cualquier usuario enviado a su dirección IP desde cualquier lugar (inclusive con encabezados de host incorrectos) será redirigido. A modo de ejemplo, si desea señalar ortografías alternativas de su dominio (dicho de otra forma, howtogreek.com), a su dominio real, esta redirección predeterminada además funciona.

Configuración de una ruta predeterminada en NGINX

Si simplemente desea escuchar en la IP, puede utilizar la próxima configuración, que devuelve una redirección 301 para las solicitudes hechas específicamente a la IP:

server {
  listen 80;
  listen [::]:80;
  server_name 123.123.123.123;
 
  add_header X-Frame-Options "SAMEORIGIN";

  return 301 https://www.example.com$request_uri;
}

A pesar de esto, puede escuchar específicamente las no coincidencias usando server_name _, que solo coincide si ninguna otra regla lo hace. Puede devolver un redireccionamiento 301 de la misma manera:

server {
  listen 80 default_server;
  listen [::]:80 default_server;
  server_name _;

  return 301 https://www.example.com$request_uri;
}

Desde luego, como con cualquier redireccionamiento 301, primero debe probar con redireccionamientos 302 temporales para asegurarse de que su configuración sea correcta.

Configuración de una ruta predeterminada en Apache

En Apache, puede redirigir las solicitudes de IP a su nombre de dominio agregando una regla de reescritura que coincida con la IP:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^123.123.123.123$
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]

Si desea redirigir todas las demás solicitudes, puede hacerlo haciendo coincidir todo lo que no es su nombre de dominio, aún cuando tenga cuidado de que no ingrese en conflicto con ningún subdominio.

RewriteEngine on
RewriteCond %{SERVER_NAME} !=www.example.com
RewriteRule ^ https://www.example.com%{REQUEST_URI} [END,NE,R=301]
Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.