Comodines en un archivo de hosts de Windows


Answers

Para responder a su pregunta, no puede usar comodines en el archivo de hosts en Windows.

Sin embargo, si solo quiere cambiar el archivo de hosts para que funcionen nuevos sitios ... puede configurar su Apache de esta manera y no tiene que seguir editando su configuración:

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

Básicamente, un resumen rápido basado en mi configuración, agregue lo siguiente a su archivo 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>

Esto me permite agregar una entrada como:

127.0.0.1       test.dev

y luego crea el directorio, c: \ xampp \ sites \ dev \ test y coloca los archivos necesarios allí y simplemente funciona.

La otra opción es usar etiquetas de <Directory> en apache.conf y hacer referencia a las páginas de http://localhost/project/ .

Question

Quiero configurar mi máquina de desarrollo local para que cualquier solicitud de *.local se redirija a localhost . La idea es que a medida que desarrolle múltiples sitios, simplemente pueda agregar vhosts a Apache llamados site1.local , site2.local , etc., y hacer que todos resuelvan a localhost , mientras que Apache sirve un sitio diferente en consecuencia.

Estoy en Windows XP.

Intenté agregar

127.0.0.1       *.local

a mi archivo c:\windows\system32\drivers\etc\hosts , también intenté:

127.0.0.1       .local

Ninguno de los cuales parece funcionar.

Sé que puedo configurarlos en diferentes números de puerto, pero eso es un problema ya que es difícil recordar qué puerto es cuál.

No quiero tener que configurar un servidor DNS local o algo difícil, ¿alguna sugerencia?




@petah y Acrylic DNS Proxy es la mejor respuesta, y al final se refiere a la capacidad de hacer multi-sitio usando un Apache que @jeremyasnyder describe un poco más abajo ...

... sin embargo, en nuestro caso estamos probando un sistema de alojamiento multi-tenant y por lo tanto la mayoría de los dominios que queremos probar van al mismo virtualhost , mientras que un par de otros se dirigen a otro lugar.

Entonces, en nuestro caso, simplemente usa los comodines de regex en la directiva ServerAlias , así que ...

ServerAlias *.foo.local



Encontré una publicación sobre el uso del archivo de hosts de Windows que también dice "No se permiten comodines".

En el pasado, acabo de agregar las entradas adicionales al archivo de hosts, porque (como se dijo anteriormente), no es mucho trabajo adicional cuando ya está editando el archivo de configuración de Apache.




Puede usar echoipdns para esto ( https://github.com/zapty/echoipdns ).

Al ejecutar echoipdns local todas las solicitudes de subdominios .local se redireccionan a 127.0.0.1, por lo que cualquier dominio con xyz.local, etc. se resolverá en 127.0.0.1. Puede usar cualquier otro sufijo también simplemente reemplace local con el nombre que desee.

Echoipdns es aún más poderoso, cuando desea usar su url desde otras máquinas en la red, puede usarlo con cero configuración.

Por ejemplo, si la dirección IP de su máquina es 192.168.1.100, ahora podría usar un nombre de dominio xyz.192-168-1-100.local que siempre se resolverá en 192.168.1.100. Esta magia la realizan los ecoipdns al observar la dirección IP en la segunda parte del nombre de dominio y devolver la misma dirección IP en la consulta DNS. Tendrá que ejecutar los ecoipdns en la máquina desde la que desea acceder al sistema remoto.

echoipdns también se puede configurar como un proxy DNS independiente, de modo que con solo señalar este DNS, ahora puede usar todos los beneficios anteriores sin ejecutar un comando especial cada vez, e incluso puede usarlo desde dispositivos móviles.

En esencia, esto simplifica el desarrollo de DNS basado en el dominio comodín para el entorno local y de equipo.

echoipdns funciona en Mac, Linux y Windows.

NOTA: Soy autor de echoipdns.




Hice esta herramienta simple para tomar el lugar de los hosts. Las expresiones regulares son compatibles. https://github.com/stackia/DNSAgent

Una configuración de muestra:

[
    {
        "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"
    }
]



Para agregar a las excelentes sugerencias que ya están aquí, XIP.IO es un fantástico servidor DNS comodín que está disponible públicamente.

      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

(La capacidad de especificar direcciones que no son de bucle invertido es fantástica para probar sitios en dispositivos con iOS donde no se puede acceder a un archivo de hosts).

Si combina esto con parte de la configuración de Apache mencionada en otras respuestas, puede potencialmente agregar VirtualHosts con configuración cero .




Si bien no puede agregar un comodín como ese, puede agregar la lista completa de los sitios que necesita, al menos para las pruebas, que funciona lo suficientemente bien para mí, en su archivo de hosts, solo agrega:

127.0.0.1 site1.local
127.0.0.1 site2.local
127.0.0.1 site3.local
...




Trabajamos con DNS comodín en nuestro servidor DNS local: agregue un registro A como *.local -> 127.0.0.1

Creo que sus configuraciones de red necesitarán tener el sufijo de dominio elegido en la lista de búsqueda de sufijos de dominio para máquinas en la red, por lo que es posible que desee reemplazar .local con el dominio interno de su compañía (por ejemplo, .int ) y luego agregar un subdominio como .localhost.int para aclarar para qué .localhost.int .

Entonces *.localhost.int se resolvería en 127.0.0.1 para todo el mundo en la red, y la configuración del archivo de configuración para todos los desarrolladores "simplemente funcionaría" si los puntos finales cuelgan de ese subdominio, por ejemplo, site2.localhost.int , site2.localhost.int Esto es más o menos el esquema que hemos introducido.

dnsmasq también se ve bien, pero aún no lo he probado: http://ihaveabackup.net/2012/06/28/using-wildcards-in-the-hosts-file/




Puede probar AngryHosts , que proporcionó una forma de admitir comodines y expresiones regulares. En realidad, es un software de administración y mejora de archivos de hosts.
Se pueden ver más características en http://angryhosts.com/features/