Fügen Sie der localhost-URL eine Subdomain hinzu

96

Ich schreibe eine Webanwendung, die sich je nach URL-Präfix unterschiedlich verhält. Das Format ist ungefähr so:

   https://myprefix.mycompany.com

Die Web-App verhält sich basierend auf myprefix unterschiedlich. Meine Web-App extrahiert diesen Teil aus der URL und reagiert darauf.

Wenn ich jedoch auf meinem lokalen Server teste, verwende ich eine lokale Hostadresse:

   https://localhost:1234

Ich würde so etwas nicht tun:

   https://myprefix.localhost:1234

Wie kann ich dieses Szenario am besten testen?

Danke vielmals

Kevin
quelle
Hier ist die Lösung dieses Problems stackoverflow.com/a/29629675/2950006
Mickel Chowdhury

Antworten:

137

Da localhostes sich nicht um eine richtige Domain handelt, können Sie leider keine solche Subdomain hinzufügen. Sie können Ihren Computer jedoch dazu verleiten, zu glauben, dass er eine bestimmte Domäne besitzt, und die Dinge auf diese Weise testen. Wenn Sie beispielsweise ein UNIX-basiertes Betriebssystem haben, öffnen Sie die Datei (als Root) /etc/hostsund fügen Sie eine Zeile (oder Zeilen) wie folgt hinzu:

127.0.0.1    example.com
127.0.0.1    subdomain.example.com

Ihr Computer behandelt nun beide example.comund subdomain.example.comals zu sich selbst gehörend. Wenn Sie einen der beiden in Ihrem Webbrowser besuchen, funktionieren diese im Prinzip genauso wie localhost, aber Ihr Webserver sieht die richtige Domain in seinem Host-Header.

Matt Patenaude
quelle
Vielen Dank für Ihre Antwort. Genau das will ich. Meine Web-App wird jedoch auf einem Port ausgeführt, z. B. 1234. Ich habe mich umgesehen und die Leute sagten, dass es keine Möglichkeit gibt, eine Portnummer in / etc / hosts anzugeben. Was ist der beste Weg, um den Port anzugeben?
Kevin
7
Sie müssen nur den Port in Ihrer URL wie gewohnt verwenden, z http://subdomain.example.com:1234/whatever. Der Port ist vollständig von der Domäne getrennt (Domänen werden zur Identifizierung des Computers verwendet, Ports werden zur Identifizierung des Programms auf dem Computer verwendet, mit dem kommuniziert werden soll).
Matt Patenaude
Wenn Sie Ihre Software als Root ausführen können (zum Testen), können Sie alternativ nur Port 80 verwenden, der die Standardeinstellung ist, sodass Sie keinen angeben müssen.
Matt Patenaude
3
Man könnte einfach die Domainnamen nach der IP-Adresse auflisten: 127.0.0.1 example.com sub.example.com sub2.example.com...
Automat
4
Dies funktioniert auch für Windows. Die Hostdatei unter Windows befindet sich unter : C:\Windows\System32\drivers\etc\hosts. Sie müssen die Datei an einen anderen Ort mit niedrigeren Berechtigungen (z. B. Ihren Desktop) kopieren, um sie zu bearbeiten und dann wieder in den Ordner einzufügen (um die Berechtigungen zu umgehen).
Lindsay-Needs-Sleep
33

Ich bin mir über das gleiche Verhalten bei Windows nicht sicher. Ich arbeite an Linux Mint.

Sie können lvh.me:portals lokale Domain verwenden. Sie können sich vorstellen, dass Ihr Projekt in localhost:portdieser Domäne bereitgestellt wird .

Anstatt müssen sub.localhost:portSie verwendensub.lvh.me:port

UPD

sub.localhost:portarbeitet bei Chrom. Firefox fügt automatisch www hinzu. am Anfang der eingegebenen Domain, die Probleme beim Testen von Subdomains verursachen kann

Vassily
quelle
Ich kann bestätigen, dass dies auch unter Windows funktioniert. Internet Explorer-, Edge-, Firefox- und Chrome-Browser funktionieren einwandfrei!
Jose A
Ich habe Firefox verwendet und die Chromspitze hat mir den Tag gerettet, danke!
ZekeMidas
2
Für zusätzliche Flexibilität können Sie auch die Dienste nio.io oder xip.io verwenden. Sie ermöglichen die Zuordnung einer beliebigen IP-Adresse zu einer beliebigen Subdomain. So könnten beispielsweise Ihre Kollegen auch dieselbe URL verwenden, um auf Ihre App zuzugreifen. Wenn die IP-Adresse Ihrer Workstation beispielsweise lautet 172.16.0.42, können Sie sie https://myprefix.myapp.172.16.0.42.nip.io:1234von Ihrem PC oder von anderen PCs in Ihrem Intranet aus verwenden.
mh8020
5

Für Windows-Benutzer können Sie dies basierend auf dieser Antwort und gemäß diesem Kommentar erreichen, indem Sie Ports zu localhost über die Hosts- Datei hinzufügen , die sich unter diesem Pfad befindet:

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

Und fügen Sie Zeilen wie die folgenden hinzu:

127.0.0.1    example.com
127.0.0.1    subdomain.example.com
Shimmy Weitzhandler
quelle
1

Einzeilige Lösung für Windows

Öffnen Sie PowerShell als Administrator und führen Sie den folgenden Befehl aus. Ersetzen sub.mydomain.comSie ihn durch den gewünschten Befehl .

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

Nervenzusammenbruch:

  • `n - Neue Zeile
  • 127.0.0.1 - Loopback-Adresse
  • sub.mydomain.com - Domainname
  • | Out-File C:\Windows\System32\drivers\etc\hosts - Pipe die Saite an die hosts
  • -encoding ASCII - korrekte Kodierung
  • -append- an Dateiende anhängen (wichtig!)
Richard Dunn
quelle
0

Sie sollten die .testDomain für solche Dinge verwenden. Dafür ist da .test. localhostsoll keine Subdomains haben.

Dies verstößt gegen die genehmigten RFC-Standards. localhosthat einen A-Eintrag und in IPv6-Umgebungen einen AAAA-Eintrag. Alle anderen DNS-Eintragstypen, einschließlich SOA, sind verboten.

Ohne einen SOA-Datensatz kann es sich nicht um einen Zonenscheitelpunkt mit Unterdatensätzen handeln. Daher sind keine Unterdomänen oder Delegierungen zulässig. Sogar der jüngste RFC-Entwurf mit dem Titel Let localhost be localhost stimmt damit überein.

HERR X
quelle