Symbole wieloznaczne w pliku windows hosts

Chcę skonfigurować moją lokalną maszynę programistyczną tak, aby wszelkie prośby o *.local były przekierowywane na localhost. Chodzi o to, że jak rozwijam wiele witryn, mogę po prostu dodać vhost do Apache o nazwie site1.local, site2.local itd, i niech wszystkie rozwiążą się localhost, podczas gdy Apache służy innej stronie odpowiednio.

Jestem na Windows XP.

Próbowałem dodać

127.0.0.1       *.local

Do mojego pliku c:\windows\system32\drivers\etc\hosts, wypróbowano również:

127.0.0.1       .local
Żadne z nich nie działa.

I know I can set them up on różne numery portów, ale to jest ból, ponieważ trudno jest zapamiętać, który port jest który.

Nie chcę instalować lokalnego serwera DNS, czy coś trudnego, jakieś sugestie?

Author: Simon East, 2008-09-26

19 answers

Acrylic DNS Proxy (free, open source) robi swoje. Tworzy serwer proxy DNS (na własnym komputerze) z własnym plikiem hosts. Plik hosts akceptuje symbole wieloznaczne.

Pobierz z oficjalnej strony

Http://mayakron.altervista.org/support/browse.php?path=Acrylic&name=Home

Konfiguracja Acrylic DNS Proxy

Aby skonfigurować Acrylic DNS Proxy, zainstaluj go z powyższego linku, a następnie przejdź do:

  1. Start
  2. programy
  3. Acrylic DNS Proxy
  4. Config
  5. Edycja Pliku Hostów Niestandardowych (AcrylicHosts.txt)

Dodaj kolejne linie na końcu pliku:

127.0.0.1   *.localhost
127.0.0.1   *.local
127.0.0.1   *.lc

Uruchom ponownie usługę Acrylic DNS Proxy:

  1. Start
  2. programy
  3. Acrilic DNS Proxy
  4. Config
  5. Restart Usługi Akrylowej

Będziesz również musiał dostosować swój DNS ustawienia w interfejsie sieciowym:

  1. Start
  2. Panel Sterowania
  3. Sieć i Internet
  4. Połączenia Sieciowe
  5. Local Area Connection Properties
  6. TCP / IPv4

Ustaw "Użyj następującego adresu serwera DNS":

Preferred DNS Server: 127.0.0.1

Jeśli następnie połączysz tę odpowiedź z odpowiedzią jeremyasnyder (używając VirtualDocumentRoot), możesz automatycznie skonfigurować domeny / hosty wirtualne, po prostu tworząc katalog.

 401
Author: Petah,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-22 13:27:58

Aby odpowiedzieć na twoje pytanie, nie możesz używać symboli wieloznacznych w pliku hosts w systemie Windows.

Jeśli jednak chcesz zmienić tylko plik hosts, aby nowe witryny działały.... możesz skonfigurować swój Apache w ten sposób i nie musisz ciągle edytować jego config:

Http://postpostmodern.com/instructional/a-smarter-mamp/

W zasadzie krótkie podsumowanie na podstawie mojej konfiguracji, dodaj następujące do swojego apache.plik conf:

 LoadModule vhost_alias_module modules/mod_vhost_alias.so

 NameVirtualHost *:80

  <Directory "/xampp/sites">
      Options Indexes FollowSymLinks Includes ExecCGI
      AllowOverride All
      Order allow,deny
      Allow from all 
  </Directory>

  <VirtualHost *:80>
      VirtualDocumentRoot c:/xampp/sites/%-1/%-2+/
  </VirtualHost>

To pozwala mi dodać wpis like:

127.0.0.1       test.dev

A następnie zrobić katalog, c:\xampp\sites\dev\test i umieść tam niezbędne pliki i po prostu działa.

Inną opcją jest użycie tagów <Directory> w apache.conf i odwoływać się do stron z http://localhost/project / .

 78
Author: jeremyasnyder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-07 13:42:16

Myślę, że to niemożliwe.

I tak musisz modyfikować wpisy Apache virtualroot za każdym razem, gdy dodajesz nową stronę i lokalizację, więc synchronizacja nowej nazwy z plikiem Windows vhost nie jest wielką pracą.

Aktualizacja: proszę sprawdzić następną odpowiedź i komentarze do tej odpowiedzi. Ta odpowiedź ma 6 lat i nie jest już poprawna.

 29
Author: Biri,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-31 08:34:11

Znalazłem post o używając Pliku Windows Hosts, który również mówi :" nie wolno używać symboli wieloznacznych."

W przeszłości dodałem tylko dodatkowe wpisy do pliku hosts, ponieważ (jak wcześniej wspomniano), nie jest to zbyt wiele dodatkowej pracy, gdy już edytujesz plik konfiguracyjny apache.

 4
Author: Kevin Hakanson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-27 23:58:24

Edycja pliku hosts jest mniej uciążliwa, gdy uruchamiasz "ipconfig / flushdns" z wiersza polecenia systemu windows, zamiast ponownie uruchamiać komputer.

 4
Author: Joe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-17 17:43:54

Aby dodać do wspaniałych sugestii już tutaj, XIP.IO to fantastyczny serwer DNS typu wildcard, który jest publicznie dostępny.

      myproject.127.0.0.1.xip.io  -- resolves to -->   127.0.0.1
  other.project.127.0.0.1.xip.io  -- resolves to -->   127.0.0.1
   other.machine.10.0.0.1.xip.io  -- resolves to -->   10.0.0.1

(możliwość określania adresów innych niż loopback jest fantastyczna w przypadku testowania witryn na urządzeniach z systemem iOS, w których nie można uzyskać dostępu do pliku hosts.)

Jeśli połączysz to z konfiguracją Apache wymienioną w innych odpowiedziach, możesz potencjalnie dodać VirtualHosts z zero setup.

 4
Author: Simon East,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-23 01:26:10

Możesz namówić administratora sieci, aby skonfigurował dla Ciebie domenę (powiedzmy " evilpuppetmaster.piekło") i posiadanie tam wildcard tak, że wszystko (*.evilpuppetmaster.hell') resolves to your IP

 3
Author: Stu Thompson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-26 08:02:56

Mamy to działa przy użyciu wildcard DNS w naszym lokalnym serwerze DNS: dodaj A rekord coś w rodzaju *.local -> 127.0.0.1

Myślę, że Twoje ustawienia sieciowe będą musiały mieć wybrany przyrostek domeny na liście wyszukiwania przyrostków domen dla maszyn w sieci, więc możesz zastąpić .local domeną wewnętrzną firmy (np. .int), a następnie dodać subdomenę jak .localhost.int, aby wyjaśnić, do czego służy.

Więc *.localhost.int zdecyduje się na 127.0.0.1 dla wszystkich w sieci, a ustawienia pliku konfiguracyjnego dla wszystkich programistów "po prostu działają", jeśli punkty końcowe zawieszą się na tej subdomenie, np. site1.localhost.int, site2.localhost.int to jest w zasadzie schemat, który wprowadziliśmy.

Dnsmasq również wygląda ładnie, ale jeszcze nie próbowałem: http://ihaveabackup.net/2012/06/28/using-wildcards-in-the-hosts-file/

 3
Author: Matthew Skelton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-23 13:46:18

Napisałem prosty serwer proxy dns w Pythonie. Odczyta wpisy z symbolami wieloznacznymi w /etc / hosts. Zobacz tutaj: http://code.google.com/p/marlon-tools/source/browse/tools/dnsproxy/dnsproxy.py

Testowałem w Linuksie i Mac OS X, ale jeszcze nie w Windows.

 2
Author: marlonyao,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-02 09:32:31

Możesz spróbować AngryHosts , które zapewniło obsługę symboli wieloznacznych i wyrażeń regularnych. W rzeczywistości jest to oprogramowanie do ulepszania i zarządzania plikami hostów.
Więcej funkcji można zobaczyć @ http://angryhosts.com/features/

 2
Author: Topro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-05 13:41:42

Używam do tego Dnschefa.

Https://thesprawl.org/projects/dnschef/

Musisz pobrać aplikację, w Linuksie lub Macu potrzebujesz Pythona, aby ją uruchomić. Okna mają swój własny exe.

Musisz utworzyć plik ini z wpisami dns, na przykład

[A]
*.google.com=192.0.2.1
*.local=127.0.0.1
*.devServer1.com=192.0.2.3

Następnie należy uruchomić aplikację dns z uprawnieniami administratora

sudo python dnschef.py --file myfile.ini -q

Lub w windows

runas dnschef.exe --file myfile.ini -q

Na koniec musisz skonfigurować jako jedyny DNS lokalne środowisko hosta (sieć, interfejs, dns lub podobny lub w linux / etc / resolv.conf).

That ' s it

 2
Author: casivaagustin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-28 14:07:53

Zrobiłem to proste narzędzie, aby zająć miejsce gospodarzy. Obsługiwane są wyrażenia regularne. https://github.com/stackia/DNSAgent

Przykładowa konfiguracja:

[
    {
        "Pattern": "^.*$",
        "NameServer": "8.8.8.8"
    },
    {
        "Pattern": "^(.*\\.googlevideo\\.com)|((.*\\.)?(youtube|ytimg)\\.com)$",
        "Address": "203.66.168.119"
    },
    {
        "Pattern": "^.*\\.cn$",
        "NameServer": "114.114.114.114"
    },
    {
        "Pattern": "baidu.com$",
        "Address": "127.0.0.1"
    }
]
 2
Author: Stackia,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-04 04:04:29

Nie mogłem znaleźć zakazu na piśmie, ale zgodnie z konwencją, plik hostów systemu Windows jest ściśle zgodny z plikiem hostów systemu UNIX i nie można umieścić odniesień do nazwy hosta z symbolami wieloznacznymi w tym pliku.

Jeśli czytasz stronę podręcznika, to jest napisane:

DESCRIPTION
     The hosts file contains information regarding the known hosts on the net-
     work.  For each host a single line should be present with the following
     information:

           Internet address
           Official host name
           Aliases

Chociaż mówi,

     Host names may contain any printable character other than a field delim-
     iter, newline, or comment character.
To nieprawda z praktycznego punktu widzenia.

Zasadniczo kod, który patrzy na plik /etc/hosts, Nie obsługuje wpisu wieloznacznego.

Obejściem jest utworzenie wszystkich wpisów w advance, może użyć skryptu, aby umieścić kilkaset wpisów na raz.

 0
Author: benc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-05 00:48:06

@petah i Acrylic DNS Proxy jest najlepszą odpowiedzią, a na koniec odwołuje się do możliwości robienia wielu witryn za pomocą Apache ' a, które @ jeremyasnyder opisuje nieco dalej...

... jednak w naszym przypadku testujemy system hostingu wielodostępnego, więc większość domen chcemy przetestować przejść do tego samego virtualhost, podczas gdy kilka innych jest kierowanych gdzie indziej.

Więc w naszym przypadku, po prostu używasz znaków regex w dyrektywie ServerAlias, w ten sposób...

ServerAlias *.foo.local
 0
Author: oucil,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-16 04:50:40

Oto całkowita konfiguracja dla tych, którzy próbują osiągnąć cel (symbole wieloznaczne w środowisku dev, czyli XAMPP -- ten przykład zakłada wszystkie strony wskazujące na ten sam kod)

Hosts file (add an entry)

Plik: %SystemRoot% \ system32 \ drivers\etc \ hosts

127.0.0.1   example.local

Httpd.konfiguracja konf (enable vhosts)

Plik: \XAMPP \ etc \ httpd.conf

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

Httpd-vhosts.konfiguracja konf

Plik: XAMPP \ etc \ extra\httpd-vhosts.conf

<VirtualHost *:80>
    ServerAdmin [email protected]
    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>

Restart apache

Utwórz plik pac:

Zapisz jako cokolwiek.pac gdziekolwiek chcesz, a następnie załaduj plik w przeglądarce sieć>proxy>ustawienia auto_konfiguracji (przeładuj, jeśli zmienisz to)

function FindProxyForURL(url, host) {
  if (shExpMatch(host, "*example.local")) {
    return "PROXY example.local";
  }
  return "DIRECT";
}
 0
Author: Daniel Jordi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-19 19:56:09

Możesz użyć echoipdns do tego ( https://github.com/zapty/echoipdns).

Uruchamiając echoipdns local wszystkie prośby olokalne subdomeny są przekierowywane do 127.0.0.1, więc każda domena z xyz.lokalny etc zostanie rozwiązany do 127.0.0.1. Możesz użyć dowolnego innego przyrostka również po prostu zamień lokalny na nazwę, którą chcesz.

Echoipdns jest jeszcze bardziej wydajny, jeśli chcesz używać adresu url z innych komputerów w sieci, nadal możesz go używać z zerową konfiguracją.

Dla np. jeśli twój adres IP maszyny to 192.168.1.100 możesz teraz użyć nazwy domeny xyz.192-168-1-100.lokalny, który zawsze rozwiąże się do 192.168.1.100. Ta magia jest wykonywana przez echoipdns, patrząc na adres ip w drugiej części nazwy domeny i zwracając ten sam adres ip w zapytaniu DNS. Będziesz musiał uruchomić echoipdns na maszynie, z której chcesz uzyskać dostęp do zdalnego systemu.

Echoipdns można również skonfigurować jako samodzielny serwer proxy DNS, więc po prostu wskaż ten DNS, możesz teraz użyć wszystkie powyższe korzyści bez uruchamiania specjalnego polecenia za każdym razem, a nawet można z niego korzystać z urządzeń mobilnych.

Zasadniczo upraszcza to rozwój DNS oparty na domenie wieloznacznej dla środowiska lokalnego i zespołowego.

Echoipdns działa na komputerach Mac, Linux i Windows.

Uwaga: jestem autorem echoipdns.

 0
Author: arva,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-09 10:12:45

Możesz użyć dynamicznego klienta DNS, takiego jak http://www.no-ip.com . Następnie z zewnętrznym serwerem DNS CNAME *.mydomain.com na mydomain.no-ip.com.

 -1
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-30 21:03:48

Chociaż nie możesz dodać takiego symbolu wildcard, możesz dodać pełną listę witryn, których potrzebujesz, przynajmniej do testowania, która działa dla mnie wystarczająco dobrze, w pliku hosts po prostu dodaj:

127.0.0.1 site1.local
127.0.0.1 site2.local
127.0.0.1 site3.local
...

 -1
Author: BlackTigerX,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-22 00:16:26

Czy Apache nasłuchuje na wielu portach jest również alternatywą.

 -3
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-16 21:35:57