Подстановочные знаки в файле хоста Windows - PullRequest
277 голосов
/ 26 сентября 2008

Я хочу настроить свою локальную машину разработки так, чтобы любые запросы на *.local перенаправлялись на localhost. Идея состоит в том, что, разрабатывая несколько сайтов, я могу просто добавить vhosts в Apache с именем site1.local, site2.local и т. Д., И разрешить им все разрешить до localhost, тогда как Apache соответственно обслуживает другой сайт.

Я на Windows XP.

Я пытался добавить

127.0.0.1       *.local

к моему c:\windows\system32\drivers\etc\hosts файлу, также пробовал:

127.0.0.1       .local

Ни один из которых, кажется, не работает.

Я знаю, что могу настроить их на разные номера портов, но это очень сложно, так как трудно вспомнить, какой порт какой.

Я не хочу настраивать локальный DNS-сервер или что-то сложное, какие-либо предложения?

Ответы [ 19 ]

412 голосов
/ 14 марта 2012

Акриловый DNS Proxy (бесплатный, с открытым исходным кодом) делает свою работу. Он создает прокси-сервер DNS (на вашем собственном компьютере) со своим собственным файлом hosts. Файл hosts принимает подстановочные знаки.

Скачать с официального сайта

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

Настройка Acrylic DNS Proxy

Чтобы настроить Acrylic DNS Proxy, установите его по приведенной выше ссылке, затем перейдите по адресу:

  1. Начало
  2. Программы
  3. Акриловый DNS-прокси
  4. Config
  5. Редактировать файл пользовательских хостов (AcrylicHosts.txt)

Добавьте следующие строки в конце файла:

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

Перезапустите службу Acrylic DNS Proxy:

  1. Начало
  2. Программы
  3. Acrilic DNS Proxy
  4. Config
  5. Перезапустить Acrylic Service

Вам также понадобится изменить настройки DNS в настройках сетевого интерфейса:

  1. Начало
  2. Панель управления
  3. Сеть и Интернет
  4. Сетевые подключения
  5. Свойства подключения по локальной сети
  6. TCP / IPv4

Установите «Использовать следующий адрес DNS-сервера»:

Preferred DNS Server: 127.0.0.1

Если вы затем объедините этот ответ с ответом jeremyasnyder (используя VirtualDocumentRoot), вы можете автоматически настроить домены / виртуальные хосты, просто создав каталог.

80 голосов
/ 07 ноября 2008

Чтобы ответить на ваш вопрос, вы не можете использовать подстановочные знаки в файле hosts под Windows.

Однако, если вы хотите изменить только файл hosts, чтобы новые сайты работали .... вы можете настроить свой Apache следующим образом, и вам не нужно продолжать редактировать его конфигурацию:

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

По сути, краткая сводка, основанная на моих настройках, добавьте в файл apache.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>

Это позволяет мне добавить запись типа:

127.0.0.1       test.dev

, а затем создайте каталог c: \ xampp \ sites \ dev \ test и поместите туда необходимые файлы, и он просто заработает.

Другой вариант - использовать теги <Directory> в apache.conf и ссылаться на страницы из http://localhost/project/.

30 голосов
/ 26 сентября 2008

Не думаю, что это возможно.

В любом случае, вам необходимо изменять записи виртуального корня apache каждый раз, когда вы добавляете новый сайт и местоположение, поэтому синхронизировать новое имя с файлом vhost Windows не так уж и сложно.

Обновление: пожалуйста, проверьте следующий ответ и комментарии к этому ответу. Этому ответу 6 лет, и он больше не правильный.

5 голосов
/ 20 марта 2015

Чтобы добавить к замечательным предложениям, уже здесь, XIP.IO - это фантастический DNS-сервер с подстановочными знаками, который общедоступен.

      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

(Возможность указывать адреса без обратной связи является фантастической для тестирования сайтов на устройствах iOS, где вы не можете получить доступ к файлу хостов.)

Если вы объедините это с некоторыми настройками Apache, упомянутыми в других ответах, вы можете потенциально добавить VirtualHosts с установка нуля .

4 голосов
/ 17 октября 2010

Редактирование файла hosts менее проблемно при запуске «ipconfig / flushdns» из командной строки Windows вместо перезагрузки компьютера.

4 голосов
/ 28 сентября 2008

Я нашел сообщение о Использование файла хостов Windows , в котором также говорится: «Подстановочные знаки недопустимы».

Раньше я только что добавлял дополнительные записи в файл hosts, потому что (как уже было сказано), это не так уж много дополнительной работы, когда вы уже редактируете конфигурационный файл apache.

3 голосов
/ 23 июля 2013

У нас это работает с использованием подстановочного DNS на нашем локальном DNS-сервере: добавьте запись A что-то вроде *.local -> 127.0.0.1

Я думаю, что в настройках вашей сети должен быть выбранный суффикс домена в списке поиска суффиксов домена для компьютеров в сети, поэтому вы можете заменить .local на внутренний домен вашей компании (например, .int) и затем добавьте поддомен, например .localhost.int, чтобы было понятно, для чего он нужен.

Таким образом, *.localhost.int будет разрешаться до 127.0.0.1 для всех в сети, а настройки файла конфигурации для всех разработчиков будут "просто работать", если конечные точки свисают с этого субдомена, например. site1.localhost.int, site2.localhost.int Это в значительной степени схема, которую мы ввели.

dnsmasq тоже выглядит красиво, но я еще не пробовал: http://ihaveabackup.net/2012/06/28/using-wildcards-in-the-hosts-file/

3 голосов
/ 26 сентября 2008

Вы можете попросить своего сетевого администратора настроить домен для вас (скажем 'evilpuppetmaster.hell') и использовать там подстановочный знак, чтобы все (* .evilpuppetmaster.hell ') преобразовывалось в ваш IP

2 голосов
/ 04 марта 2015

Я сделал этот простой инструмент, чтобы занять место хозяев. Регулярные выражения поддерживаются. https://github.com/stackia/DNSAgent

Пример конфигурации:

[
    {
        "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 голосов
/ 28 февраля 2014

Я использую DNSChef для этого.

https://thesprawl.org/projects/dnschef/

Вы должны загрузить приложение, в Linux или Mac вам нужен python для его запуска. У Windows есть собственный exe.

Вы должны создать INI-файл с вашими записями DNS, например

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

Затем вы должны запустить приложение DNS с правами администратора.

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

или в окнах

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

Наконец, вам нужно настроить в качестве единственного DNS ваше локальное хост-окружение (сеть, интерфейс, DNS или подобное или в linux /etc/resolv.conf).

Вот и все

...