Jak umieścić wpis z symbolem wieloznacznym w / etc / hosts?
85
Niedawno chciałem wskazać wszystkie subdomeny dla domeny testowej, powiedzmy example.com, do lokalnego hosta. Czy istnieje sposób na skierowanie wszystkich żądań na * .example.com do rozwiązania 127.0.0.1?
rahilwazir, właściwie jest tak, jeśli nie chcesz wszystkich subdomen. # działa również jako symbol wieloznaczny. Osobiście używam `address = / dev # .example.com / 127.0.0.1, aby uruchomić dev123.example.com itp.
Ray Foss
8
Oto konfiguracja dla tych, którzy próbują osiągnąć pierwotny cel (wszystkie symbole wieloznaczne wskazują na tę samą bazę kodu - nic nie instaluj, środowisko programistyczne, tj. XAMPP)
plik hosts (dodaj wpis)
plik: / etc / hosts (inne niż Windows)
127.0.0.1 example.local
konfiguracja httpd.conf (włącz vhosty)
plik: /XAMPP/etc/httpd.conf
# Virtual hosts
Include etc/extra/httpd-vhosts.conf
zapisz jako cokolwiek.pac, gdziekolwiek chcesz, a następnie załaduj plik w sieci przeglądarki> proxy> ustawienia automatycznej konfiguracji (załaduj ponownie, jeśli to zmienisz)
function FindProxyForURL(url, host) {
if (shExpMatch(host, "*example.local")) {
return "PROXY example.local";
}
return "DIRECT";
}
Nie działa dla plików hostów w systemie Windows. Akceptuje tylko www.example.com
Andre Figueiredo
1
działa to w systemie Windows używającym pliku pac w przeglądarce Firefox. Przetestowałem to na wielu komputerach z systemem Windows. plik hosts wymaga tylko jednego wpisu, plik pac obsługuje subdomeny.
Daniel Jordi,
1
Oryginalne pytanie, jak rozumiem, nie dotyczy w ogóle apache, ale na poziomie sieci, więc myślę, że twoja odpowiedź mija się z celem: /
Zwróć uwagę, że używając pliku pac do wysyłania żądań proxy do hosta (np. Localhost), serwer WWW, taki jak Apache, użyje pełnego adresu URL (łącznie z protokołem i nazwą hosta) w zmiennej REQUEST_URI zamiast tylko składnika ścieżki.
JSchirrmacher
5
użyj dnsmasq
udając, że używasz systemu dist opartego na Debianie (ubuntu, mint ..), sprawdź, czy jest zainstalowany z
(sudo) systemctl status dnsmasq
Jeśli jest po prostu wyłączony, zacznij od
(sudo) systemctl start dnsmasq
Jeśli musisz go zainstalować, napisz
(sudo) apt-get install dnsmasq
Aby zdefiniować domeny, aby rozwiązać /etc/dnsmasq.conftaką edycję
address=/example.com/127.0.0.1
aby rozwiązać * .example.com
! Musisz przeładować dnsmasq, aby zmiany zaczęły obowiązywać!
Odpowiedzi:
Zdarza się, że
/etc/hosts
plik nie obsługuje wpisów z symbolami wieloznacznymi.Będziesz musiał skorzystać z innych usług, takich jak dnsmasq. Aby włączyć to w dnsmasq, po prostu edytuj
dnsmasq.conf
i dodaj następujący wiersz:źródło
dnsmasq
konfiguracji Ubuntu zobacz ten .Oto konfiguracja dla tych, którzy próbują osiągnąć pierwotny cel (wszystkie symbole wieloznaczne wskazują na tę samą bazę kodu - nic nie instaluj, środowisko programistyczne, tj. XAMPP)
plik hosts (dodaj wpis)
plik: / etc / hosts (inne niż Windows)
konfiguracja httpd.conf (włącz vhosty)
plik: /XAMPP/etc/httpd.conf
Konfiguracja httpd-vhosts.conf
plik: XAMPP / etc / extra / httpd-vhosts.conf
zrestartuj apache
utwórz plik pac:
zapisz jako cokolwiek.pac, gdziekolwiek chcesz, a następnie załaduj plik w sieci przeglądarki> proxy> ustawienia automatycznej konfiguracji (załaduj ponownie, jeśli to zmienisz)
źródło
użyj dnsmasq
udając, że używasz systemu dist opartego na Debianie (ubuntu, mint ..), sprawdź, czy jest zainstalowany z
Jeśli jest po prostu wyłączony, zacznij od
Jeśli musisz go zainstalować, napisz
Aby zdefiniować domeny, aby rozwiązać
/etc/dnsmasq.conf
taką edycjęaby rozwiązać * .example.com
! Musisz przeładować dnsmasq, aby zmiany zaczęły obowiązywać!
źródło