No puedo hacer que mod_rewrite funcione en Lion. Estoy desarrollando una serie de sitios web localmente, en ~ / Sitios, usando archivos .htaccess. Estoy en 10.7.3 y no he tocado ningún archivo de configuración, excepto 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 pasar por alto algo, o de lo contrario probablemente me estoy volviendo loco, pero no está funcionando.
He probado todas las cosas habituales:
En
/private/etc/apache2/users/<myusername>.conf
el cambioAllowOverride None
deAllowOverride All
y reiniciar el servidor webAdemás, en
/private/etc/apache2/httpd.conf
, cambiar cualquiera / todas las ocurrencias deAllowOverride None
aAllowOverride All
- Lo he intentado en todos los diversos lugares donde se encuentran estas directivasPruebe básicamente todas las combinaciones posibles de valores para la
Options
línea encima / debajo de laAllowOverride
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; Me sale un 404, no encontrado. El registro de errores de Apache solo me da errores "El archivo no existe:". 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 funcionado perfectamente, hasta que migré a una nueva máquina con Lion. Es decir, estoy descartando un error en mis archivos .htaccess porque sé que funcionó antes. Además, si se tratara de un error en el .htaccess, recibiría algún tipo de mensaje de error del módulo mod_rewrite en el registro de errores 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 la 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.
fuente
Respuestas:
Debe asegurarse de que en su /etc/apache2/users/username.conf tenga lo siguiente:
FollowSymlinks y AllowOverride son esenciales aquí. Mientras insinúa ambos en su pregunta, tal vez no los configuró correctamente en conjunto.
Asegúrese de que en 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 todavía 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 regla de reescritura regex se compara con un URI de solicitud sin la barra diagonal 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 diagonal inicial y es relativo a la raíz web. Como se supone que tiene su .htaccess en un subdirectorio de ~ / Sites, 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:
fuente
Agregar opciones + FollowSymLinks funcionó bien para mí
fuente
Options +FollowSymLinks
? Solo agrego 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 inicial del final, como la que tenía:
¡Y ahora funciona!
fuente
A continuación, las entradas de .htaccess me arreglan
fuente
Colocando .htaccess en / Library / WebServer / Documents y abra "localhost /"; para probarlo, funciona como se esperaba. Simplemente no funciona en "~ / Sitios". Gracias Niels Heidenreich por esto!
fuente
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.
fuente
/
siempre son rutas absolutas para Apache, consulte la definición de raíz del servidor web en http.conf (<Directory "/Library/WebServer/Documents">
)