Apache .htaccess <ifModule no está permitido aquí

13

Ejecutando Apache en Ubuntu Precise, con PHP 5.5

Intentar acceder a mi var/www/me da un 500.

/var/log/apache2/error.log

muestra:

/ /var/www/web/.htaccess: <IfModule not allowed here

mi .htacess es:

DirectoryIndex app.php


<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
    RewriteRule ^(.*) - [E=BASE:%1]

    RewriteCond %{ENV:REDIRECT_STATUS} ^$
    RewriteRule ^app\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]

    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule .? - [L]

    RewriteRule .? %{ENV:BASE}/app.php [L]
</IfModule>

<IfModule !mod_rewrite.c>
    <IfModule mod_alias.c>       
        RedirectMatch 302 ^/$ /app.php/       
    </IfModule>
</IfModule>

En mi apache.conf agregué:

<Directory />
AllowOverride ALL
</Directory>

Y funcionó después de reiniciar Apache.

Kiksy
fuente

Respuestas:

25

Debe configurar su apache para habilitar la configuración desde el archivo .htaccess. Entonces, en la sección del directorio, asegúrese de tener la opción

Allowoverride ALL 

para obtener más información, más información sobre allowoverride .

En su configuración, si usa solo mod_rewrite, tal vez pueda configurar solo FileInfo, siempre configuro el parámetro Opciones en SymLinksIfOwnerMatch para poder realizar la redirección a otros sitios.

Allowoverride FileInfo 
Options SymLinksIfOwnerMatch

Espero que ayude, si ya configuró esta configuración, agregue información con su configuración de host virtual.

Xerus
fuente
Esta es una nueva instalación de Apache. No tengo la sección <Directorio /> en apache2.conf. He agregado mi actualización arriba. Gracias
Kiksy
Olvidé reiniciar Apache. Eso está funcionando ahora.
Kiksy
1
Por mi parte, me faltaba una Directorydirectiva. Una vez agregado, funcionó correctamente. Supongo que esto es nuevo en la versión 2.4 de Apache porque solía funcionar con 2.2 ...
Alexis Wilke
1
Sí, el valor predeterminado para Allowedoverride cambió en Apache 2.3.9.
mlissner