Подстановочные знаки в файле hosts Windows



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



Я нахожусь на Windows XP.



Я пробовал добавлять



127.0.0.1       *.local


мой , также пробовал:



127.0.0.1       .local


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



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



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

1261   19  

19 ответов:

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

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

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

настройка акрилового DNS прокси

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

  1. Start
  2. программы
  3. акриловый DNS прокси
  4. Config
  5. Редактировать Пользовательский Файл Hosts (AcrylicHosts.txt)

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

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

перезапустите службу прокси-сервера Acrylic DNS:

  1. Start
  2. программы
  3. Acrilic DNS Доверенности
  4. Config
  5. Перезапустить Акриловый Сервис

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

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

Set " используйте следующий DNS-сервер адрес":

Preferred DNS Server: 127.0.0.1

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

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

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

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

В основном краткое резюме, основанное на моей настройке, добавьте следующее в свой apache.конф файл:

 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/.

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

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

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

Я нашел сообщение о С помощью файла Hosts Windows что же говорит "Нет маски."

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

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

чтобы добавить к большим предложениям уже здесь, 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, где вы не можете получить доступ к файлу hosts.)

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

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

у нас есть эта работа с использованием подстановочных 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/

Я написал простой DNS-прокси на Python. Он будет читать подстановочные записи в/etc / hosts. Смотрите здесь: http://code.google.com/p/marlon-tools/source/browse/tools/dnsproxy/dnsproxy.py

Я тестировал в Linux и Mac OS X, но еще не в Windows.

вы можете попробовать AngryHosts, что обеспечило возможность поддержки подстановочных знаков и регулярных выражений. На самом деле, это расширение файлов hosts и программное обеспечение для управления.
Больше возможностей можно увидеть@ http://angryhosts.com/features/

Я использую 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

или в windows

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

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

вот это

Я сделал этот простой инструмент, чтобы занять место хозяев. Поддерживаются регулярные выражения. 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"
    }
]

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

Если Вы читаете man-страницу, она говорит:

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

хотя он говорит,

     Host names may contain any printable character other than a field delim-
     iter, newline, or comment character.

это неверно с практической точки зрения.

в принципе, код, который выглядит в файле /etc/hosts не поддерживает запись с подстановочными знаками.

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

@petah и Acrylic DNS Proxy-лучший ответ, и в конце он ссылается на возможность делать несколько сайтов с помощью Apache, который @jeremyasnyder описывает немного ниже...

... однако в нашем случае мы тестируем мультитенантную хостинговую систему и так большинство домены, которые мы хотим проверить, идут к тому же virtualhost, в то время как несколько других направлены в другое место.

поэтому в нашем случае вы просто используете подстановочные знаки regex в

вот общая конфигурация для тех, кто пытается достичь цели (подстановочные знаки в среде разработки ie, XAMPP - в этом примере предполагается, что все сайты указывают на одну и ту же кодовую базу)

hosts файл (добавить запись)

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

127.0.0.1   example.local

httpd.конфигурации (включить виртуальные хосты)

file: \XAMPP\etc\httpd.conf

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

httpd-vhosts.конфигурации

: 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>

перезапустить apache

создать файл pac:

сохранить как угодно.pac везде, где вы хотите, а затем загрузите файл в сеть браузера > прокси>настройки auto_configuration (перезагрузите, если вы измените это)

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

вы можете использовать echoipdns для этого (https://github.com/zapty/echoipdns).

под управлением echoipdns local все запросы .локальные поддомены перенаправляются на 127.0.0.1, поэтому любой домен с xyz.местные и т. д. будем решать на 127.0.0.1. Вы можете использовать любой другой суффикс также просто заменить локальный с именем, которое вы хотите.

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

например, если ваш IP-адрес машины 192.168.1.100 теперь вы можете использовать доменное имя xyz.192-168-1-100.локальный, который всегда будет разрешать 192.168.1.100. Эта магия выполняется echoipdns, просматривая ip-адрес во второй части доменного имени и возвращая тот же ip-адрес в запросе DNS. Вам нужно будет запустить echoipdns на машине, с которой вы хотите получить доступ к удаленной системе.

echoipdns также может быть установлен в качестве отдельного DNS-прокси, так просто укажите на этот DNS, теперь вы можете использовать все вышеперечисленные преимущества без запуска специальной команды каждый раз, и вы даже можете использовать его с мобильных устройств.

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

echoipdns работает на Mac, Linux и Windows.

примечание: Я автор для echoipdns.

вы можете использовать динамический DNS-клиент, например http://www.no-ip.com. затем с помощью внешнего DNS-сервера CNAME *.mydomain.com к mydomain.no-ip.com.

хотя вы не можете добавить такой подстановочный знак, вы можете добавить полный список сайтов, которые вам нужны, по крайней мере для тестирования, что достаточно хорошо работает для меня, в вашем файле hosts, вы просто добавляете:

127.0.0.1 site1.местные
127.0.0.1 site2.местные
127.0.0.1 site3.местные
...

у apache слушать на многих портах также является альтернативой.

Comments

    Ничего не найдено.