Comment rediriger l'adresse IP vers le nom de domaine dans NGINX ou Apache

Contenu

Logo Nginx

C'est un cas extrême, mais si quelqu'un tape son adresse IP au lieu de son nom de domaine, vous voudrez que votre serveur traite correctement cette demande et vous redirige vers le site réel. Nous allons vous montrer comment le configurer dans NGINX et Apache.

Pourquoi est-ce nécessaire?

Pour presque toutes les demandes, les utilisateurs sont susceptibles de se connecter en utilisant leur nom de domaine, donc vous ne verrez vraiment pas ce problème dans la pratique. Mais c'est une solution facile et ça ne fait pas de mal d'ajouter.

Vous pouvez configurer votre serveur pour écouter spécifiquement votre adresse IP et renvoyer une redirection 301 en son vrai nom, qui résoudra le problème et mettra le nom de votre portail Web dans la barre d'URL pour toute demande d'adresse IP uniquement.

Malgré cela, une méthode meilleure et plus complète consiste simplement à gérer toutes les autres routes en retournant une redirection. De cette manière, tout utilisateur envoyé à votre adresse IP de n'importe où (même avec de mauvais en-têtes d'hôte) sera redirigé. Par exemple, si vous souhaitez indiquer des orthographes alternatives pour votre domaine (En d'autres termes, howtogreek.com), à son domaine royal, cette redirection par défaut fonctionne également.

Définir une route par défaut dans NGINX

Si vous voulez juste écouter sur l'IP, vous pouvez utiliser le paramètre suivant, qui renvoie une redirection 301 pour les demandes adressées spécifiquement à l'IP:

serveur {
  Ecoutez 80;
  Ecoutez [::]:80;
  nom du serveur 123.123.123.123;
 
  add_header X-Frame-Options "MÊME ORIGINE";

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

Malgré cela, vous pouvez écouter spécifiquement les discordances en utilisant server_name _, qui ne correspond que si aucune autre règle ne correspond. Peut retourner une redirection 301 de la même manière:

serveur {
  Ecoutez 80 default_server;
  Ecoutez [::]:80 default_server;
  nom du serveur _;

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

Depuis lors, comme pour toute redirection 301, vous devriez d'abord essayer les redirections 302 temporaire pour vous assurer que vos paramètres sont corrects.

Définir une route par défaut dans Apache

Dans Apache, vous pouvez rediriger les requêtes IP vers votre nom de domaine en ajoutant une règle de réécriture qui correspond à l'IP:

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

Si vous souhaitez rediriger toutes les autres demandes, vous pouvez le faire en faisant correspondre tout ce n'est pas votre nom de domaine, même en faisant attention à ne pas entrer en conflit avec des sous-domaines.

RewriteEngine on
RewriteCond %{NOM DU SERVEUR} !=www.example.com
RewriteRule ^ https://www.exemple.com%{REQUEST_URI} [FINIR,NON,R=301]
Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.