Habilitar la reescritura de URL (mod_rewrite) usando archivos .htaccess en ~ / Sites en Lion

13

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 para habilitar PHP en httpd.conf (que funciona).

Sé que hay al menos 2 preguntas sobre esto aquí, pero las soluciones que se detallan 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 probablemente me estoy volviendo loco, pero no funciona.

He intentado todas las cosas habituales:

  1. En /private/etc/apache2/users/<myusername>.conf , cambia AllowOverride None a AllowOverride All y reinicia el servidor web

  2. Además, en /private/etc/apache2/httpd.conf , cambie cualquiera / todas las ocurrencias de AllowOverride None a AllowOverride All . Lo he probado en todos los lugares donde se encuentran estas directivas

  3. Pruebe básicamente todas las combinaciones posibles de valores para la línea Options arriba / debajo de la línea AllowOverride , incluidos los valores: Indexes MultiViews FollowSymLinks All

Por supuesto, siempre se reinicia el servidor web después de dicho cambio. Nada de esto funciona. Todas mis urls limpias simplemente no funcionan; Obtengo un 404 - no encontrado. El registro de errores de Apache solo me da "el archivo no existe:" errores. Así que 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í de forma predeterminada en una instalación de Lion.

Lo loco es que todo había estado funcionando 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 archivo .htaccess, obtendría algún tipo de mensaje de error del módulo mod_rewrite en el error_log de Apache, al menos me dice 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é son las instrucciones (como cómo activar mod_rewrite en MacOSX Lion y haciendo que mod_rewrite funcione en Mac OS X ) trabajando para otras personas pero no para mi? :)

Ya he perdido horas en esto. Cualquier ayuda sería muy apreciada.

    
pregunta Niels Heidenreich 03.04.2012 - 22:05

5 respuestas

12

Debería asegurarse de que en su /etc/apache2/users/username.conf tenga 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í. Mientras está insinuando ambas preguntas en su pregunta, tal vez no las 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, quizás 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 diagonal y siempre en relación con el directorio donde reside el .htaccess , mientras que en un httpd.conf global, el URI debe coincide con una barra diagonal inicial y es relativa a la raíz web. Como se supone que tiene su .htaccess en un subdirectorio de ~ / Sites, sus reglas de reescritura podrían comportarse de forma 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
    
respondido por el Gerry 03.04.2012 - 22:30
1

Agregar Opciones + FollowSymLinks funcionó bien para mí

Options +FollowSymLinks

RewriteEngine on
RewriteBase /
RewriteRule
    
respondido por el user53804 20.08.2013 - 15:30
1

Estaba experimentando un problema similar en el que mi archivo .htaccess se estaba ignorando por completo mientras estaba en una subcarpeta dentro de mi directorio ~ / Sites bajo un host virtual que estaba configurado correctamente.

Habiendo pasado la última hora jugando con diferentes archivos de configuración y configurando AllowOverride Todos en varios lugares, finalmente descubrí que el archivo .htaccess, mientras que parecía un archivo .htaccess en Finder, era en realidad un .htaccess.txt archivo con la extensión oculta.

Para revisar y cambiar su archivo .htaccess, haga clic con el botón 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!

    
respondido por el Jarada 25.11.2014 - 17:59
0

Colocando .htaccess en / Library / WebServer / Documents y abra "localhost /"; Para probarlo, funciona como se espera. Simplemente no funciona en "~ / Sites". ¡Gracias Niels Heidenreich por esto!

    
respondido por el Varun Bhatia 02.04.2014 - 13:29
-1

Cuando escribes: / Users / username / app_name

La / se refiere a la raíz del servidor web:

"localhost /"

Si usa / ~ username / app_name en su reescritura, debería funcionar.

    
respondido por el Bisteces 31.01.2013 - 03:15

Lea otras preguntas en las etiquetas