Wie füge ich einen Platzhalter in / etc / hosts ein?


81

Ich wollte kürzlich alle Subdomains für eine Testdomain verweisen, sagen wir example.com auf den localhost. Gibt es eine Möglichkeit, alle Anforderungen auf * .example.com auf 127.0.0.1 zu verweisen?


Antworten:


98

Es kommt vor, dass die /etc/hostsDatei keine Platzhaltereinträge unterstützt.

Sie müssen andere Dienste wie dnsmasq verwenden. Um es in dnsmasq zu aktivieren, bearbeiten Sie einfach dnsmasq.confdie folgende Zeile und fügen Sie sie hinzu:

address=/example.com/127.0.0.1

4
für Platzhalter - Adresse = /. example.com/127.0.0.1
vivex

2
@ Vivek Es ist nicht erforderlich
Rahil Wazir

4
Informationen zum Ubuntu- dnsmasqSetup finden Sie in diesem .
Zitronenqueeze

5
Für das Macosx-Setup ist passingcuriosity.com/2013/dnsmasq-dev-osx ziemlich hilfreich.
Aamir

4
Rahilwazir, eigentlich ist es, wenn Sie nicht alle Subdomains wollen. # funktioniert auch als Platzhalter. Ich persönlich verwende ʻaddress = / dev # .example.com / 127.0.0.1, damit dev123.example.com usw. funktioniert.
Ray Foss

6

Hier ist die Konfiguration für diejenigen, die versuchen, das ursprüngliche Ziel zu erreichen (Platzhalter, die alle auf dieselbe Codebasis verweisen - nichts installieren, Entwicklungsumgebung, dh XAMPP)

Hosts-Datei (Eintrag hinzufügen)

Datei: / etc / hosts (Nicht-Windows)

127.0.0.1   example.local

httpd.conf Konfiguration (vhosts aktivieren)

Datei: /XAMPP/etc/httpd.conf

# Virtual hosts
Include etc/extra/httpd-vhosts.conf

httpd-vhosts.conf Konfiguration

Datei: XAMPP / etc / extra / httpd-vhosts.conf

<VirtualHost *:80>
    ServerAdmin admin@example.local
    DocumentRoot "/path_to_XAMPP/htdocs"
    ServerName example.local
    ServerAlias *.example.local
#    SetEnv APP_ENVIRONMENT development
#    ErrorLog "logs/example.local-error_log"
#    CustomLog "logs/example.local-access_log" common
</VirtualHost>

Starten Sie Apache neu

Pac-Datei erstellen:

Speichern Sie als Whatever.pac, wo immer Sie möchten, und laden Sie die Datei dann in die Einstellungen Netzwerk> Proxy> Autokonfiguration des Browsers (laden Sie sie neu, wenn Sie dies ändern)

function FindProxyForURL(url, host) {
  if (shExpMatch(host, "*example.local")) {
    return "PROXY example.local";
  }
  return "DIRECT";
}

Funktioniert nicht für Hosts-Dateien unter Windows. Es wird nur www.example.com
Andre Figueiredo

1
Dies funktioniert unter Windows mit der pac-Datei in Firefox. Ich habe dies auf mehreren Windows-Computern getestet. Die Hosts-Datei benötigt nur einen Eintrag, die Pac-Datei behandelt die Subdomains.
Daniel Jordi

1
Die ursprüngliche Frage, so wie ich sie verstehe, handelt überhaupt nicht von Apache, sondern auf Netzwerkebene. Ich denke, Ihre Antwort verfehlt den Punkt: /
enTropy


1
Beachten Sie, dass ein Webserver wie Apache bei Verwendung einer pac-Datei zum Proxy von Anforderungen an einen Host (z. B. localhost) die vollständige URL (einschließlich Protokoll und Hostname) in der Variablen REQUEST_URI anstelle nur der Pfadkomponente verwendet.
JSchirrmacher

4

benutze dnsmasq

Stellen Sie sich vor, Sie verwenden ein debian-basiertes dist (ubuntu, mint ..) und prüfen, ob es mit installiert ist

(sudo) systemctl status dnsmasq

Wenn es nur deaktiviert ist, starten Sie es mit

(sudo) systemctl start dnsmasq

Wenn Sie es installieren müssen, schreiben Sie

(sudo) apt-get install dnsmasq

So definieren Domänen zu lösen bearbeiten /etc/dnsmasq.confwie diese

address=/example.com/127.0.0.1

zu lösen * .example.com

! Sie müssen dnsmasq neu laden, damit die Änderungen wirksam werden!

systemctl reload dnsmasq
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.