Si queremos trabajar localmente en nuestros proyectos, podemos crear hosts virtuales, de manera que naveguemos por el sitio usando URLs como estamos acostumbrados a hacerlo en los sitios de Internet. Esto lo logramos de la siguiente manera:

1. Editamos el archivo hosts.

Abrimos el archivo hosts que se ubica en la carpeta etc que está en la raíz. Ejemplo:

$ sudo vi /etc/hosts (Utilizamos sudo para tener permisos de escritura sobre el archivo)

Agregamos una línea nueva e incluimos una linea similar a la siguiente (sustituir la palabra nombre, con el nombre de nuestro proyecto):

127.0.0.1 nombre. localhost. com

Salvamos el archivo y listo. Vemos un ejemplo de como queda el archivo:

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
255.255.255.255 broadcasthost
: :1 localhost
fe80: :1%lo0 localhost
127.0.0.1 nombre. localhost. com

2. Indicamos en httpd. conf de Apache que vamos a usar virtual hosts.

Abrimos el archivo httpd. conf que está ubicado en /Applications/MAMP/conf/apache/httpd. conf

en MAMP 2 Buscamos las líneas que dicen:

# Virtual hosts
#Include /Applications/MAMP/conf/extra/httpd-vhosts. conf

en MAMP 3 Buscamos las líneas que dicen:

# Virtual hosts
#Include /Applications/MAMP/conf/extra/httpd-vhosts. conf

y removemos el símbolo: # que está antes de la línea que inicia con la palabra Include. Nos debe quedar de la siguiente forma:

# Virtual hosts
Include /Applications/MAMP/conf/apache/extra/httpd-vhosts. conf

3. Crear los virtual hosts.

Abrimos el archivo /Applications/MAMP/conf/extra/httpd-vhosts. conf, si el archivo no ha sido antes modificado, lo vamos a encontrar como se muestra a continuación:

#
# Virtual Hosts
#
# If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn't need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at
# <URL: http://httpd. apache. org/docs/2.2/vhosts/>
# for further details before you try to setup virtual hosts.
#
# You may use the command line option '-S' to verify your virtual host
# configuration.
#
# Use name-based virtual hosting.
#
NameVirtualHost *: 80
#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#
<VirtualHost *: 80>
ServerAdmin webmaster@dummy-host. example. com
DocumentRoot "/Applications/MAMP/Library/docs/dummy-host. example. com"
ServerName dummy-host. example. com
ServerAlias www. dummy-host. example. com
ErrorLog "logs/dummy-host. example. com-error_log"
CustomLog "logs/dummy-host. example. com-access_log" common
< /VirtualHost>
<VirtualHost *: 80>
ServerAdmin webmaster@dummy-host2. example. com
DocumentRoot "/Applications/MAMP/Library/docs/dummy-host2. example. com"
ServerName dummy-host2. example. com
ErrorLog "logs/dummy-host2. example. com-error_log"
CustomLog "logs/dummy-host2. example. com-access_log" common
< /VirtualHost>

Borramos las lineas de xml, y las cambiamos por las siguientes:

<VirtualHost *: 80>
DocumentRoot /Users/mac/www/
ServerName localhost
<Directory "/Users/mac/www">
AllowOverride All
< /Directory>
< /VirtualHost>
<VirtualHost *: 80>
DocumentRoot "/Users/mac/www/MiProyecto"
ServerName nombre. localhost. com
<Directory "/Users/mac/www/MiProyecto">
AllowOverride All
< /Directory>
< /VirtualHost>

El archivo debe quedar similar a la siguiente configuración:

#
# Virtual Hosts
#
# If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn't need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at
# <URL: http://httpd. apache. org/docs/2.2/vhosts/>
# for further details before you try to setup virtual hosts.
#
# You may use the command line option '-S' to verify your virtual host
# configuration.
#
# Use name-based virtual hosting.
#
NameVirtualHost *: 80
#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#
<VirtualHost *: 80>
DocumentRoot /Users/mac/www/
ServerName localhost
<Directory "/Users/mac/www">
AllowOverride All
< /Directory>
< /VirtualHost>
<VirtualHost *: 80>
DocumentRoot "/Users/mac/www/MiProyecto"
ServerName nombre. localhost. com
<Directory "/Users/mac/www/MiProyecto">
AllowOverride All
< /Directory>
< /VirtualHost>

En mi caso, todos mis proyectos los tengo dentro de una carpeta llamada www que se encuentra en /Users/mac/, esto no es obligatorio, basta adaptar los paths según en lugar donde tengamos nuestros proyectos en la computadora.

Si decides tener logs personalizados estos por defecto quedaran en el directorio /Applications/MAMP/Library/logs.

Es importante verificar que el puerto escogido para los virtual host coincidan con el puerto definido con la directiva Listen en el archivo http. conf de apache como se muestra a continuación.

1
2
#Listen 12.34.56.78: 80
Listen 80

Hechos los pasos anteriores, queda reiniciar los servidores del MAMP para que nuestros cambios tengan efecto. Luego abrimos nuestro navegador y colocamos la dirección http: //nombre. localhost. com/ para poder trabajar en nuestro proyecto.

Para futuros sitios, simplemente copiamos, pegamos y adaptamos en el archivo httpd-vhosts. conf, el siguiente XML.

<VirtualHost *: 80>
DocumentRoot "/Users/mac/www/OTROproyecto"
ServerName otro. localhost. com
< /VirtualHost>

Saludos!