En Mac OS X 10.9.3 he incluido http-vhosts en httpd.conf
# Virtual hosts
Include /private/etc/apache2/extra/httpd-vhosts.conf
He comentado DocumentRoot y Directory en httpd.conf
# DocumentRoot "/Library/WebServer/Documents"
# <Directory "/Library/WebServer/Documents">...</Directory>
He agregado lo siguiente a mi archivo httpd-vhosts.conf
<VirtualHost *.80>
DocumentRoot /Users/gdboling/Sites/rocket-gen
ServerName local.rocket-gen.com
<Directory "/Users/gdboling/Sites/rocket-gen">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Y he agregado lo siguiente a mi archivo /etc/hosts
127.0.0.1 local.rocket-gen.com
He reiniciado Apache
sudo apachectl restart
Hay un index.html en ese directorio, pero cuando accedo a http://local.rocket-gen.com desde el navegador, obtengo un 404. Obtengo esto en los registros de errores.
[Tue Jun 17 19:09:10 2014] [error] [client 127.0.0.1] File does not exist: /usr/htdocs
No puedo entender por qué no está funcionando. Si creo ese directorio como DocumentRoot en httpd.conf, funciona. Pero necesito tener varios hosts virtuales, por lo que me gustaría que el archivo vhosts funcione.
Parece que tienes casi todo correcto. Estoy ejecutando Mavericks con un par de docenas de hosts virtuales, por lo que debería funcionar para usted.
Primero, y esto podría ser todo lo que necesita hacer para arreglar las cosas, debe incluir su DocumentRoot entre comillas. Entonces,
DocumentRoot /Users/gdboling/Sites/rocket-gen
se convierte
DocumentRoot "/Users/gdboling/Sites/rocket-gen"
A continuación, agregue lo siguiente a su /etc/hosts
archivo, en la línea que sigue inmediatamente a lo que ya tiene. Su hosts
archivo debe ser:
Tienes esta parte:
127.0.0.1 local.rocket-gen.com
Ahora agrega esto justo debajo:
::1 local.rocket-gen.com
Tengo cada uno de mis vhosts configurados de hosts
esta manera.
Obviamente, su apache no puede encontrar su raíz de documento definida. En mi opinión, mezclas algunas cosas.
Primero, corrija el error tipográfico dentro del contenedor VirtualHost. Usted define el direccionamiento de un puerto con dos puntos, no con un "."
<VirtualHost *:80>...</VirtualHost>
En segundo lugar, si desea alojar varios servidores por nombre y no por dirección IP, debe utilizar hosts virtuales basados en nombres. Luego, por supuesto, en la configuración de Apache se perdió la directiva NameVirtualHost, si desea configurarlo de esta manera.
NameVirtualHost server1.example.org:80
( http://httpd.apache.org/docs/2.2/vhosts/name-based.html )
SIEMPRE configure el nombre del servidor, de lo contrario, Apache no puede cambiar a su nueva raíz del documento.
En tercer lugar, en la parte principal de configuración de httpd.conf comentó el DocumentRoot. ¿Hiciste esto también con las reglas de acceso en la sección "Directorio /" para tu anterior DocumentRoot?
En cuarto lugar, si desea configurar VirtualHost duro en lugar de NameVirtualHost, no olvide la directiva Listen. Entonces para eso necesitas un
Listen *:80
en su principal httpd.conf. Si desea configurar diferentes servidores en diferentes direcciones IP, debe configurarlos de esta manera:
<VirtualHost server1.example.com:80>...
Esto me sucedió cuando actualicé a Mavericks (10.9.5). Apple parece haber eliminado "Web Sharing" de la aplicación "System Preferences", que era importante para la forma en que http.conf
se escribió el archivo.
Dos formas de solucionarlo:
apachectl -k inicio -D WEBSHARING_ON
http.conf
archivo para eliminar <IfDefine WEBSHARING_ON>
y correspondiente </IfDefine>
, PERO NO el contenido entre las etiquetas.
stephen.hanson
::1 ...
parte es lo que me faltaba.