¿Cómo poner una entrada comodín en / etc / hosts?

82

Recientemente, quise apuntar todos los subdominios para un dominio de prueba, digamos example.com al localhost. ¿Hay alguna manera de señalar todas las solicitudes en * .example.com para resolverlas en 127.0.0.1?

aamir
fuente

Respuestas:

99

Sucede que el /etc/hostsarchivo no admite entradas con comodines.

Tendrá que utilizar otros servicios como dnsmasq. Para habilitarlo en dnsmasq, simplemente edite dnsmasq.confy agregue la siguiente línea:

address=/example.com/127.0.0.1
aamir
fuente
4
para entrada de comodines - dirección = /. example.com/127.0.0.1
vivex
2
@Vivek No es necesario
Rahil Wazir
4
Para la dnsmasqconfiguración de ubuntu , vea este .
Lemonsqueeze
5
Para la configuración de macosx, passcuriosity.com/2013/dnsmasq-dev-osx es bastante útil.
aamir
4
rahilwazir, en realidad, lo es si no desea todos los subdominios. # también funciona como comodín. Personalmente estoy usando `address = / dev # .example.com / 127.0.0.1 para hacer que dev123.example.com, etc. funcione.
Ray Foss
6

Aquí está la configuración para aquellos que intentan lograr el objetivo original (todos los comodines apuntan a la misma base de código: no instale nada, entorno de desarrollo, es decir, XAMPP)

archivo hosts (agregue una entrada)

archivo: / etc / hosts (no Windows)

127.0.0.1   example.local

Configuración de httpd.conf (habilitar vhosts)

archivo: /XAMPP/etc/httpd.conf

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

Configuración de httpd-vhosts.conf

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

reiniciar apache

crear archivo pac:

guarde como lo que sea.pac donde quiera y luego cargue el archivo en la red del navegador> proxy> configuración de auto_configuración (vuelva a cargar si modifica esto)

function FindProxyForURL(url, host) {
  if (shExpMatch(host, "*example.local")) {
    return "PROXY example.local";
  }
  return "DIRECT";
}
Daniel Jordi
fuente
No funciona para archivos hosts en Windows. Solo aceptará www.example.com
Andre Figueiredo
1
esto funciona en Windows usando el archivo pac en Firefox. He probado esto en varias máquinas con Windows. el archivo de hosts solo requiere una entrada, el archivo pac maneja los subdominios.
Daniel Jordi
1
La pregunta original, según tengo entendido, no se trata de apache en absoluto, sino del nivel de la red, así que creo que su respuesta pierde el sentido: /
enTropy
para usar el archivo pac en Internet explore, consulte: campus.barracuda.com/product/websecurityservice/article/WSS/…
saeed arab sheybani
1
Tenga en cuenta que al usar un archivo pac para enviar solicitudes a un host (por ejemplo, localhost), un servidor web como Apache usaría la URL completa (incluido el protocolo y el nombre de host) en la variable REQUEST_URI en lugar de solo el componente de ruta.
JSchirrmacher
5

utilizar dnsmasq

pretendiendo que estás usando un dist basado en Debian (ubuntu, mint ..), verifica si está instalado con

(sudo) systemctl status dnsmasq

Si solo está deshabilitado, comience con

(sudo) systemctl start dnsmasq

Si tiene que instalarlo, escriba

(sudo) apt-get install dnsmasq

Para definir dominios para resolver editar /etc/dnsmasq.confcomo este

address=/example.com/127.0.0.1

para resolver * .example.com

! ¡Debe volver a cargar dnsmasq para que se apliquen los cambios!

systemctl reload dnsmasq
Emmanuel
fuente