Configurar virtualhost en Apache para Windows

  • Por
Crear y configurar un host virtual en tu servidor web Apache para Windows, editando la configuración VirtualHost y el archivo hosts.
En este artículo vamos a crear un host virtual en tu ordenador local para que accedas desde tu navegador a un dominio "virtual", que se servirá desde tu propio servidor web Apache que tienes en local. Para ello vamos a trabajar desde un Apache que hemos instalado con Xampp, pero de manera idéntica lo puedes hacer para Wamp o cualquier otro programa utilizado para instalar tu servidor web.

Esto puede ser útil por diversos motivos, pero en mi caso lo estoy utilizando para configurar este host virtual sobre una carpeta de Dropbox, que comparto con diversos ordenadores. De este modo puedo tener acceso a mis archivos de desarrollo local desde cualquiera de mis ordenadores e incluso desde sistemas operativos distintos.

Este proceso es muy sencillo y lo puedes reproducir en diez minutillos sin mayores complicaciones. Consta de dos pasos principales:

  1. Crear el host virtual en Windows editando el archivo "hosts"
  2. Configurar Apache para que acepte VirtualHost y asociarlo a tu carpeta Dropbox

Nota: Tenemos un artículo anterior que te puede dar una idea de cómo configurar tu host virtual en Linux, donde existen algunas diferencias.

1) Crear tu host virtual en Windows

El primer paso es configurar el archivo "hosts" de Windows, que mantiene una lista de nombres de servidor que puedes hacer corresponder con direcciones IP. Usarás el nombre de host que desees y lo asociarás a tu IP local.

El archivo de hosts en Windows 7 está en la carpeta C:\Windows\System32\drivers\etc. Allí verás diversos archivos y tendrás que editar el llamado "hosts".

Nota: Si esa carpeta o alguna de las carpetas padre, o esos archivos no están visibles en tu sistema, asegúrate de que en las opciones de carpeta tienes configurado que te muestre los archivos ocultos. En otros sistemas Windows consulta con San-Google cuál es la localización del archivo hosts.

Ahora, ten atención a un detalle importante. El archivo "hosts" está protegido contra escritura y tendrás que estar ejecutando tu bloc de notas como administrador para poder salvar los cambios. Si no eres administrador te saldrá un mensaje que dice que "Please check if this file is opened in another program" o algo como "no tiene permisos para guardar en esta ubicación, solicite permisos al administrador".

Para abrir como administrador tienes la opción de abrir primero el Bloc de notas en modo de administración. Para ello, en el menú de programas, pulsas con el botón derecho sobre el icono del Bloc de notas y luego seleccionas "Ejecutar como administrador". Luego abres desde el bloc el archivo de hosts y entonces te permitirá guardar los cambios.

Los cambios en este archivo de hosts que tienes que introducir son bien sencillos. Simplemente le diremos el nombre del host que deseamos crear virtualmente y la IP a la que solicitar los servicios. Tienes varios ejemplos sobre la sintaxis que se debe usar, pero es bien simple.

127.0.0.1 mihostvirtual.com

Has podido ver que se indica primero la IP local 127.0.0.1 y luego el nombre del host virtual, separados por un espacio o tabulador.

2) Configurar Apache para aceptar virtualhost

Este segundo paso es un poco más complejo, pero con un copia-pega lo tenemos solucionado. Se trata de abrir el archivo de configuración de Apache para los host virtuales "vhost". El archivo está en esta ruta en mi Xampp.

C:\xampp\apache\conf\extra

El nombre del archivo es: httpd-vhosts.conf

Lo editas con cualquier editor y verás que tiene una descripción también sobre la sintaxis a usar para configurar los host virtuales en Apache. Nosotros agregaremos al final unas cuantas líneas.

NameVirtualHost *
<VirtualHost *>
DocumentRoot "C:\xampp\htdocs"
ServerName localhost
</VirtualHost>
<VirtualHost *>
DocumentRoot "C:\Users\Miguel\Dropbox\desarrollo"
ServerName mihostvirtual.com
<Directory "C:\Users\Miguel\Dropbox\desarrollo">
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

Las primeras líneas son para indicarle a Apache que el host virtual localhost sigue siendo la carpeta "htdocs" de Xampp C:\xampp\htdocs. Esto es bueno que lo dejes así para que puedas mantener los archivos que actualmente tienes en tu localhost y el acceso a aplicaciones como PhpMyAdmin que tienes ya instaladas en local.

Luego tenemos el segundo virtual host que está asociado al host virtual que acabamos de crear. Allí verás un par de datos que tienes que editar. Primero, la ruta C:UsersMiguelDropboxdesarrollo la deberás cambiar por la ruta de la carpeta que tienes en Dropbox, donde están los archivos de tu servidor. Luego tendrás que cambiar también mihostvirtual.com por el nombre del host virtual que acabas de definir en el archivo hosts del Windows.

Reinicia el Apache…

Solucionar "Acceso prohibido!" Error 403

El problema que te puedes encontrar en este punto es recibir un error 403 de "acceso prohibido", con un mensaje "Usted no tiene permiso para accesar al directorio solicitado…" (en inglés este error lo encontrarás como "Access Forbidden"). Ocurre porque Apache está rechazando la conexión por la configuración de tu Virtualhost.

Nota: Este error lo he encontrado en un Xampp más actual, la versión 1.8.1, pero en la versión 1.8.0 que tengo en otro ordenador me había funcionado sin arrojar ningún error 403, tal y como había explicado anteriormente.

En definitiva, sería cambiar unas líneas en el bloque "Directory". Con esta otra configuración, el error 403 me ha desaparecido.

<Directory "E:\Dropbox\desarrollo">
   Options All
   AllowOverride All
   Require all granted
</Directory>

No os puedo dar muchos más detalles, más allá de mi sentido común aplicado al leer esas líneas de configuración, pues no soy un experto , ni mucho menos, en Apache. En decenas de webs solucionan este mismo problema y ofrecen diversas otras variantes de configuración que puedes probar si es que te arroja este error de acceso. Te sugiero ver el enlace Adding VirtualHost fails: Access Forbidden Error 403 (XAMPP) (Windows 7) donde ofrecen muchas variantes y configuraciones que han funcionado para muchos otros desarrolladores.

Abriendo el virtual host recién configurado

Ahora ya solo te queda crear un archivo "index.html", o como lo desees crear, para acceder al mismo a través de tu navegador.

http://mihostvirtual.com

Accederás al "index.php" o "index.html" que tengas en esa carpeta.

Opcionalmente, si quieres permitir el listado de directorio de este host virtual (para que te muestre el listado de carpetas y archivos que tienes al acceder a un directorio donde no tengas el documento por defecto), tienes que incluir una línea de configuración dentro del elemento "directory".

<Directory "C:\Users\Miguel\Dropbox\desarrollo">
Order allow,deny
Allow from all
Options Indexes FollowSymLinks
</Directory>

Con esto ya lo tienes todo configurado. Realmente tardas más en leerte el artículo que en realizar los cambios en tu sistema.

Nota: Muy bien ¿Has configurado tu virtualhost en Xampp? pues ahora probablemente querrás poder acceder a ese host virtual desde cualquier ordenador o dispositivo de tu red local de una manera cómoda, para hacer testing en otros sistemas, tablets o móviles usando conexión Wi-Fi.

Autor

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Comenzó en el mundo del desarrollo web en el año 1997, transformando su hobby en su trabajo.

Compartir

Comentarios

Carlos

03/9/2014
Gracias
Pude solucionar el error 403 gracias a tu ayuda, muchas gracias!!!

Miguel García

15/10/2014
Gracias
Amigo, me ayudaste mucho, pude solucionar el error de Acceso Prohibido. Gracias

Fernando

02/11/2014
Gracias
Muchas Gracias Funcionó correctamente cambiar las lineas que dices del Directory

Lela

25/6/2015
Mi ruta para el archivo Hosts
En Windows esta en C:WindowsSystem32Driversetc

paulo villamayor

24/8/2015
vhost
genail esta el tutorial.

gracias por el aporte.

Ruben

14/9/2015
Gracias
Gracias, me ayudo mucho

fernando camejo

24/1/2017
para acceder desde otro equipo
no tendría que agregar en el host del equipo desde el cual quiero acceder la ip más la cedana que se coloca en la barra de direcciones, lo he intentado como dice el articulo pero no he tenido suerte