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

Es un caso límite, 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 redirija 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 realmente 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 sitio web en la barra de URL para cualquier solicitud de dirección IP únicamente.

Sin embargo, 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 (incluso con encabezados de host incorrectos) será redirigido. Por ejemplo, si quisiera señalar ortografías alternativas de su dominio (es decir,howtogreek.com), a su dominio real, esta redirección predeterminada también funciona.

Configuración de una ruta predeterminada en NGINX

Si simplemente desea escuchar en la IP, puede usar la siguiente configuración, que devuelve una redirección 301 para las solicitudes realizadas 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;
}

Sin embargo, puede escuchar específicamente las no coincidencias usandoserver_name _, que solo coincide si ninguna otra regla lo hace. Puede devolver una redirección 301 de la misma manera:

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

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

Por supuesto, 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 Apachepuede 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 ^(.*)$ https://www.example.com/$1 [L,R=301]

Si desea redirigir todas las demás solicitudes, puede hacerlo haciendo coincidir todo lo que no sea su nombre de dominio, aunque tenga cuidado de que esto no entre 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]

Actualizaciones del boletín

Ingrese su dirección de correo electrónico a continuación para suscribirse a nuestro boletín