Ajouter un sous-domaine à l'URL de l'hôte local


98

J'écris une application Web qui se comporte différemment en fonction d'un préfixe d'url. Le format est quelque chose comme:

   https://myprefix.mycompany.com

L'application Web se comporte différemment en fonction de mon préfixe. Mon application Web extrait cette partie de l'URL et agit en conséquence.

Cependant, lorsque je teste sur mon local, j'utilise une adresse localhost:

   https://localhost:1234

Je ne conseille pas de faire quelque chose comme:

   https://myprefix.localhost:1234

Quelle est la meilleure façon pour moi de tester ce scénario?

Merci beaucoup


Voici la solution de ce problème stackoverflow.com/a/29629675/2950006
Mickel Chowdhury

Réponses:


140

Malheureusement, comme ce localhostn'est pas un domaine approprié, vous ne pouvez pas y ajouter un sous-domaine comme ça. Vous pouvez cependant tromper votre ordinateur en lui faisant croire qu'il possède un domaine spécifique et tester les choses de cette façon. Par exemple, si vous avez un système d'exploitation basé sur UNIX, ouvrez (en tant que root) le fichier /etc/hostset ajoutez une ou plusieurs lignes comme ceci:

127.0.0.1    example.com
127.0.0.1    subdomain.example.com

Votre ordinateur traitera désormais les deux example.comet subdomain.example.comcomme appartenant à lui-même. Si vous visitez l'un ou l'autre dans votre navigateur Web, ils fonctionneront de la même manière, en principe, que localhost, mais votre serveur Web verra le domaine correct dans son en-tête Host.


Merci beaucoup pour votre réponse. C'est exactement ce que je veux. Cependant, mon application Web fonctionne sur un port, disons 1234. J'ai cherché et les gens ont dit qu'il n'y avait aucun moyen de spécifier un numéro de port dans / etc / hosts. Quelle est la meilleure façon de spécifier le port?
Kevin le

7
Vous allez devoir utiliser simplement le port dans votre URL comme d' habitude, par exemple http://subdomain.example.com:1234/whatever. Le port est entièrement séparé du domaine (les domaines sont utilisés pour identifier la machine, les ports sont utilisés pour identifier le programme de la machine avec lequel communiquer).
Matt Patenaude du

Sinon, si vous pouvez exécuter votre logiciel en tant que root (pour les tests), vous pouvez simplement utiliser le port 80, qui est la valeur par défaut, vous n'aurez donc pas à en spécifier un.
Matt Patenaude

4
On pourrait simplement lister les noms de domaine après l'adresse IP: 127.0.0.1 example.com sub.example.com sub2.example.com...
automate

5
Cela fonctionne également pour Windows. Le fichier hôte sur Windows est situé à: C:\Windows\System32\drivers\etc\hosts. Vous devrez copier le fichier dans un autre endroit disposant d'autorisations plus faibles (comme votre bureau), pour le modifier, puis le recoller dans le dossier (pour contourner les autorisations).
Lindsay-Needs-Sleep

34

Je ne suis pas sûr du même comportement aux fenêtres. Je travaille sur linux mint.

Vous pouvez utiliser lvh.me:portcomme domaine local. Vous pouvez imaginer que votre projet est déployé localhost:portsur ce domaine.

Au lieu d' sub.localhost:portutilisersub.lvh.me:port

UPD

sub.localhost:portfonctionne à chrome. Firefox ajoute automatiquement www. au début du domaine saisi qui peut poser des problèmes lors du test des sous-domaines


Je peux confirmer que cela fonctionne également sur Windows. Les navigateurs Internet Explorer, Edge, Firefox et Chrome fonctionnent parfaitement!
Jose A

J'utilisais Firefox et Chrome Tip m'a sauvé la journée, merci!
ZekeMidas le

2
Pour plus de flexibilité, vous pouvez également utiliser les services nio.io ou xip.io. Ils permettent de mapper n'importe quelle adresse IP à n'importe quel sous-domaine. Ainsi, par exemple, vos collègues peuvent également utiliser la même URL pour accéder à votre application. Par exemple, si l'adresse IP de votre poste de travail est 172.16.0.42, vous pouvez l'utiliser à https://myprefix.myapp.172.16.0.42.nip.io:1234partir de votre PC ou d'autres PC de votre intranet.
mh8020 le

5

Pour les utilisateurs de Windows, sur la base de cette réponse et de ce commentaire, vous pouvez y parvenir en ajoutant des ports à localhost via le fichier hosts qui réside à ce chemin:

C:\Windows\System32\drivers\etc\hosts

Et ajoutez-y des lignes comme les suivantes:

127.0.0.1    example.com
127.0.0.1    subdomain.example.com

1

Solution en une ligne pour Windows

Ouvrez PowerShell en tant qu'administrateur et exécutez la commande suivante, en remplaçant sub.mydomain.compar ce que vous voulez.

"`n127.0.0.1    sub.mydomain.com" | Out-File C:\Windows\System32\drivers\etc\hosts -encoding ASCII -append

Panne:

  • `n - nouvelle ligne
  • 127.0.0.1 - adresse de bouclage
  • sub.mydomain.com - nom de domaine
  • | Out-File C:\Windows\System32\drivers\etc\hosts - pipe la corde vers le hosts
  • -encoding ASCII - encodage correct
  • -append- ajouter à la fin du fichier (important!)

1

Vous devriez utiliser le .testdomaine pour des choses comme ça. C'est à ça que ça sert .test. localhostn'est pas censé avoir de sous-domaines.

Faire ainsi enfreint les normes RFC approuvées. localhosta un enregistrement A et dans les environnements IPv6, un enregistrement AAAA. Tous les autres types d'enregistrement DNS, y compris SOA, sont interdits.

Sans un enregistrement SOA, il ne peut pas s'agir d'un sommet de zone qui a des sous-enregistrements, donc aucun sous-domaine ni délégation n'est autorisé. Même le récent projet de RFC intitulé Let localhost be localhost est cohérent avec cela.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.