Il s'agit d'une affaire marginale, mais si quelqu'un tape votre adresse IP au lieu de votre nom de domaine, vous souhaiterez que votre serveur traite correctement cette demande et les redirige vers le site réel. Nous allons montrer comment le configurer dans NGINX et Apache.
Pourquoi est-ce nécessaire?
Pour presque toutes les demandes, les utilisateurs utilisent probablement votre nom de domaine, vous ne verrez donc pas vraiment ce problème dans la pratique. Mais, c'est une solution facile, et cela ne fait pas de mal à ajouter.
Vous pouvez configurer votre serveur pour écouter spécifiquement votre adresse IP et renvoyer une redirection 301 vers votre vrai nom, ce qui résoudra le problème et mettra le nom de votre site Web dans la barre d'URL pour toute demande d'adresse IP uniquement.
Cependant, une méthode meilleure et plus complète consiste à gérer simplement toutes les autres routes en renvoyant une redirection. De cette façon, tous les utilisateurs envoyés à votre adresse IP de n'importe où (même avec des en-têtes d'hôte incorrects) seront redirigés. Par exemple, si vous souhaitez pointer d'autres orthographes de votre domaine (c'est-à-dire, howtogreek.com), vers votre domaine réel, cette redirection par défaut fonctionne également.
Configuration d'une route par défaut dans NGINX
Si vous souhaitez simplement écouter sur l'IP, vous pouvez utiliser la configuration suivante, qui renvoie une redirection 301 pour les demandes adressées spécifiquement à l'IP:
serveur { écouter 80; écouter (: :): 80; nom_serveur 123.123.123.123; add_header X-Frame-Options "SAMEORIGIN"; return 301 https: //www.example.com$request_uri; }
Cependant, vous pouvez spécifiquement écouter les non-correspondances en utilisant nom du serveur _
, qui ne correspond que si aucune autre règle ne le fait. Vous pouvez renvoyer une redirection 301 de la même manière:
serveur { écouter 80 default_server; écouter (: :): 80 default_server; nom du serveur _; return 301 https: //www.example.com$request_uri; }
Bien sûr, comme pour toute redirection 301, vous devez d'abord tester avec des redirections 302 temporaires pour vous assurer que votre configuration est correcte.
Configuration d'une route par défaut dans Apache
Dans Apache, vous pouvez rediriger les demandes 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.example.com/\ (L, R = 301)
Si vous souhaitez rediriger toutes les autres demandes, vous pouvez le faire en faisant correspondre tout ce qui n'est pas votre nom de domaine, mais veillez à ce que cela n'entre en conflit avec aucun sous-domaine.
RewriteEngine sur RewriteCond% {SERVER_NAME}! = Www.example.com RewriteRule ^ https: //www.example.com% {REQUEST_URI} (END, NE, R = 301)