Как поместить подстановочный знак в / etc / hosts?

85

Недавно я хотел указать все поддомены для тестового домена, скажем, example.com на localhost. Есть ли способ указать все запросы на * .example.com для разрешения на 127.0.0.1

Аамир
источник

Ответы:

103

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

Вам придется использовать другие службы, такие как dnsmasq. Чтобы включить его в dnsmasq, просто отредактируйте dnsmasq.confи добавьте следующую строку:

address=/example.com/127.0.0.1
Аамир
источник
5
для подстановочного знака - address = /. example.com/127.0.0.1
vivex
2
@Vivek Это не обязательно
Рахил Вазир
4
Для dnsmasqнастройки ubuntu см. Этот .
lemonsqueeze
5
Для установки macosx очень полезно пройти curiosity.com/2013/dnsmasq-dev-osx .
aamir 08
4
rahilwazir, на самом деле, это если вам не нужны все поддомены. # также работает как подстановочный знак. Я лично использую `address = / dev # .example.com / 127.0.0.1, чтобы dev123.example.com работал и т.д.
Рэй Фосс,
8

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

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

файл: / etc / hosts (не для Windows)

127.0.0.1   example.local

Конфигурация httpd.conf (включить vhosts)

файл: /XAMPP/etc/httpd.conf

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

Конфигурация httpd-vhosts.conf

файл: XAMPP / etc / extra / httpd-vhosts.conf

<VirtualHost *:80>
    ServerAdmin admin@example.local
    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:

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

function FindProxyForURL(url, host) {
  if (shExpMatch(host, "*example.local")) {
    return "PROXY example.local";
  }
  return "DIRECT";
}
Даниэль Хорди
источник
Не работает с файлом hosts в Windows. Он будет принимать только www.example.com
Андре Фигейредо
1
это работает в Windows с использованием файла pac в firefox. Я тестировал это на нескольких машинах с Windows. файл hosts требует только одну запись, файл pac обрабатывает поддомены.
Даниэль Хорди
1
Исходный вопрос, насколько я понимаю, касается вообще не apache, а сетевого уровня, поэтому я думаю, что ваш ответ упускает суть: /
enTropy
для использования файла pac в Интернете см .: campus.barracuda.com/product/websecurityservice/article/WSS/…
саид араб шейбани
1
Обратите внимание, что при использовании pac-файла для прокси-запросов к хосту (например, localhost) веб-сервер, такой как Apache, будет использовать полный URL-адрес (включая протокол и имя хоста) в переменной REQUEST_URI вместо только компонента пути.
JSchirrmacher
5

использовать dnsmasq

делая вид, что вы используете дистрибутив на основе debian (ubuntu, mint ..), проверьте, установлен ли он с помощью

(sudo) systemctl status dnsmasq

Если он просто отключен, запустите его с

(sudo) systemctl start dnsmasq

Если надо его установить, напишите

(sudo) apt-get install dnsmasq

Чтобы определить домены для разрешения редактирования, /etc/dnsmasq.confкак это

address=/example.com/127.0.0.1

для разрешения * .example.com

! Вам необходимо перезагрузить dnsmasq, чтобы изменения вступили в силу!

systemctl reload dnsmasq
Иммануил
источник