hacer que mod_rewrite funcione en Mac OS X

Estoy tratando de hacer que la reescritura de mods funcione en mi Mac. Este es el contenido del archivo .htaccess:

<Files *\.ini>
  order allow,deny
  deny from all
</Files>

RewriteEngine on
RewriteRule .* index.php

Sé que esto está activo, porque está bloqueando los archivos .ini correctamente y parece volver a escribir la solicitud ficticia /foo, index.phpya que este es el error que veo en el navegador:

La URL solicitada /Users/rwel/Sites/dev/quaestio/index.php no se encontró en este servidor.

El archivo index.php actualmente solo contiene una declaración de salida para fines de prueba, y funciona cuando se llama directamente. Entonces, la pregunta es, ¿qué va mal? Entré en el registro de errores de apache, y esto es lo que vi:

[Jue 03 de noviembre 14:36:02 2011] [error] [cliente 127.0.0.1] El archivo no existe: /Library/WebServer/Documents/Users

Entonces, el problema podría ser que no está buscando en la raíz, sino en relación con el /Library/WebServer/Documentsdirectorio. ¿Tengo razón? ¿Cómo puedo arreglar esto?

¡Gracias por tu ayuda!

Respuestas (2)

Debe configurar hosts virtuales.

En /etc/apache2/httpd.conf elimine el comentario de la línea:

#Include /private/etc/apache2/extra/httpd-vhosts.conf

Ahora edite /etc/apache2/extra/httpd-vhosts.conf. Elimine los vhosts de ejemplo, pero especifique un vhost predeterminado como el primero. Aquí hay una configuración de ejemplo.

NombreVirtualHost *:80

<VirtualHost *:80>
        DocumentRoot /Library/WebServer/Documents
</VirtualHost>

<VirtualHost *:80>
        ServerName myproject
        DocumentRoot /Users/username/Sites/myproject
        <Directory /Users/username/Sites/myproject>
                Order Allow,Deny
                Allow from all
        </Directory>
</VirtualHost>

Reinicie apache ejecutando apache2ctl restart.

Debe agregar una entrada a su archivo /etc/hosts para que su nombre de servidor resuelva:

127.0.0.1  myproject

Ahora, al acceder a http://myproject , sus reglas de reescritura serán relativas a la raíz del documento correcto.

Muchas gracias. Creo que probablemente tengas razón. He probado la configuración de hosts virtuales antes, pero descubrí que la desventaja era que ya no podía acceder a mi carpeta /Library/WebServer/Documents (aquí es donde está instalado phpMyAdmin).
Con este ejemplo, la configuración localhost aún estaría sirviendo /Library/WebServer/Documents. El primer host virtual siempre es el predeterminado.
Tiene razón, esta primera entrada de host virtual resolvió ese problema. ¡Tu solución funciona totalmente! Gracias de nuevo :)

Además de la solución de Gerry, agregué AllowOverride All, lo que hizo posible la reescritura en mi caso;

<VirtualHost *:80>
        DocumentRoot /Library/WebServer/Documents
</VirtualHost>

<VirtualHost *:80>
        ServerName myproject
        DocumentRoot /Users/username/Sites/myproject
        <Directory /Users/username/Sites/myproject>
                Order Allow,Deny
                Allow from all
                AllowOverride All
        </Directory>
</VirtualHost>

Fuente: http://forum.joomla.org/viewtopic.php?t=518192