Подстановочные знаки в файле 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-сервер или что-то сложное, какие-либо предложения?
19 ответов:
акриловый DNS прокси (бесплатно, с открытым исходным кодом) делает эту работу. Он создает прокси-сервер DNS (на вашем собственном компьютере) со своим собственным файлом hosts. Файл hosts принимает подстановочные знаки.
скачать с официального сайта
http://mayakron.altervista.org/support/browse.php?path=Acrylic&name=Home
настройка акрилового DNS прокси
чтобы настроить акриловый DNS-прокси, установите его по ссылке выше, а затем перейдите к:
- Start
- программы
- акриловый DNS прокси
- Config
- Редактировать Пользовательский Файл Hosts (AcrylicHosts.txt)
добавьте следующие строки в конце файла:
127.0.0.1 *.localhost 127.0.0.1 *.local 127.0.0.1 *.lcперезапустите службу прокси-сервера Acrylic DNS:
- Start
- программы
- Acrilic DNS Доверенности
- Config
- Перезапустить Акриловый Сервис
вам также нужно будет настроить настройки DNS в настройках сетевого интерфейса:
- Start
- Панель Управления
- сеть и интернет
- Сетевые Подключения
- Свойства Подключения По Локальной Сети
- 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.localhttpd.конфигурации (включить виртуальные хосты)
file: \XAMPP\etc\httpd.conf
# Virtual hosts Include etc\extra\httpd-vhosts.confhttpd-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.местные
...
Comments