No puedo hacer que mod_rewrite funcione en Lion. Estoy desarrollando varios sitios web localmente, en ~/Sitios, utilizando archivos .htaccess. Estoy en 10.7.3 y no he tocado ningún archivo de configuración excepto para habilitar PHP en httpd.conf (que funciona).
Sé que hay al menos 2 preguntas sobre esto aquí, pero las soluciones detalladas allí no funcionan. Tampoco las otras soluciones que he encontrado en la web. Debo estar haciendo algo estúpido o pasando por alto algo, o probablemente me estoy volviendo loco, pero no está funcionando.
He probado todas las cosas habituales:
En /private/etc/apache2/users/<myusername>.conf
, cambie AllowOverride None
a AllowOverride All
y reinicie el servidor web
Además, en /private/etc/apache2/httpd.conf
, cambie cualquiera/todas las apariciones de AllowOverride None
a AllowOverride All
: lo probé en todos los lugares donde se encuentran estas directivas
Pruebe básicamente todas las combinaciones posibles de valores para la Options
línea arriba/abajo de la AllowOverride
línea, incluidos los valores:Indexes MultiViews FollowSymLinks All
Siempre reiniciando el servidor web después de tal cambio, por supuesto. Nada de esto funciona. Todas mis URL limpias simplemente no funcionan; Recibo un 404 - no encontrado. El registro de errores de Apache solo me da "El archivo no existe:" errores. Entonces parece que el módulo mod_rewrite ni siquiera funciona en absoluto.
Me aseguré de que mod_rewrite esté cargado en httpd.conf, que es; es así por defecto en una instalación de Lion.
Lo loco es que todo había estado funcionando perfectamente, hasta que migré a una nueva máquina que ejecutaba Lion. Es decir, estoy descartando un error en mis archivos .htaccess porque sé que funcionó antes. Además, si fuera un error en .htaccess, obtendría algún tipo de mensaje de error del módulo mod_rewrite en error_log de Apache, al menos diciéndome que se está llamando al módulo en sí. Pero esto no está sucediendo.
¿Estoy pasando por alto algo? ¿Tengo que cambiar los ajustes de configuración en otro lugar? ¿Tengo que cambiar la configuración de PHP? ¿Por qué las instrucciones (como Cómo activar mod_rewrite en MacOSX Lion y hacer que mod_rewrite funcione en Mac OS X ) funcionan para otras personas pero no para mí? :)
Ya he perdido horas en esto. Cualquier ayuda será muy apreciada.
Debes asegurarte de que en tu /etc/apache2/users/username.conf tienes lo siguiente:
<Directory "/Users/username/Sites/">
Options Indexes MultiViews FollowSymlinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
Los FollowSymlinks y AllowOverride son esenciales aquí. Si bien está insinuando ambos en su pregunta, tal vez no los configuró correctamente en conjunto.
Asegúrese de que httpd.conf /private/etc/apache2/extra/httpd-userdir.conf también esté incluido. Es por defecto.
Después de cualquier modificación, reinicie el servidor web para que los cambios surtan efecto.
Si aún tiene problemas, tal vez haya un problema con sus reglas de reescritura reales. ¿Los estabas usando en un contexto .htaccess antes también? Tenga en cuenta que en un .htaccess, la expresión regular de la regla de reescritura se compara con un URI de solicitud sin la barra inclinada inicial y siempre en relación con el directorio donde reside el .htaccess , mientras que en un httpd.conf global, el URI debe coincidir con una barra inclinada inicial y es en relación con la raíz web. Debido a que supuestamente tiene su .htaccess en un subdirectorio de ~/Sitios, sus reglas de reescritura pueden comportarse de manera diferente a cuando el .htaccess reside en la raíz web de un host (virtual).
Para depurar mod_rewrite, puede habilitar el registro de reescritura. Debe habilitar eso en /etc/apache2/httpd.conf:
RewriteLogLevel 3
RewriteLog /path/to/rewrite.log
Agregar opciones +FollowSymLinks funcionó bien para mí
Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteRule
Options +FollowSymLinks
? Acabo de agregar esa línea que funciona para míEstaba experimentando un problema similar en el que mi archivo .htaccess se ignoraba por completo mientras estaba en una subcarpeta dentro de mi directorio ~/Sites en un VirtualHost que estaba configurado correctamente.
Después de pasar la última hora jugando con diferentes archivos de configuración y configurando AllowOverride All en varios lugares, finalmente descubrí que el archivo .htaccess, aunque parecía un archivo .htaccess en Finder, en realidad era un archivo .htaccess.txt con el extensión oculta.
Para verificar y cambiar su archivo .htaccess, haga clic derecho sobre él y elija Obtener información y luego asegúrese de eliminar cualquier extensión principal del final, como la que tenía:
¡Y ahora funciona!
Debajo de las entradas de .htaccess arregladas para mí
Options Indexes FollowSymLinks
<ifModule mod_rewrite.c>
RewriteEngine On
#RewriteBase /~charles/Sites/Timesheet/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [NC,QSA,L]
</ifModule>
Colocar .htaccess en /Library/WebServer/Documents y abrir "localhost/"; para probarlo, funciona como se esperaba. Simplemente no funciona en "~/Sitios". ¡Gracias Niels Heidenreich por esto!
Cuando escribe: /Users/username/app_name
El / se refiere a la raíz del servidor web:
"localhost/"
Si usa /~username/app_name en su reescritura, debería funcionar.
/
son siempre rutas absolutas para Apache, consulte la definición de raíz del servidor web en http.conf ( <Directory "/Library/WebServer/Documents">
)
Niels Heidenreich
Niels Heidenreich
dan j