Luego de migrar un sitio MediaWiki a un nuevo servidor, me encontré con el siguiente error al tratar de cargar las imágenes incrustadas en las páginas:

[Wed Dec 07 20:05:40 2016] [alert] [client 192.168.85.159] /var/www/wiki/images/.htaccess: RewriteEngine not allowed here, referer: http://wiki.linuxito.com/index.php/Manuales



El archivo .htaccess en cuestión, tiene el siguiente contenido:

# Protect against bug 28235
<IfModule rewrite_module>
        RewriteEngine On
        RewriteCond %{QUERY_STRING} \.[^\\/:*?\x22<>|%]+(#|\?|$) [nocase]
        RewriteRule . - [forbidden]
</IfModule>

Esto es una simple regla de reescritura con mod_rewrite.

El error "RewriteEngine not allowed here" ocurre porque, en la configuración del directorio dentro del VirtualHost de Apache para el sitio, se indica que se deben ignorar completamente los archivos .htaccess:

# nano /etc/apache2/sites-available/wiki
<IfModule rewrite_module>
        RewriteEngine On


        <Directory /var/www/wiki>
                Options FollowSymLinks MultiViews
                AllowOverride none

La directiva AllowOverride none ignora los archivos .htaccess dentro del directorio de imágenes de la Wiki.

Para que se interpreten los archivos .htaccess, y la regla de reescritura funcione, es posible cambiar la configuración de none a FileInfo:

                AllowOverride FileInfo

De acuerdo al manual de Apache, FileInfo permite que se interpreten (dentro de archivos .htaccess) las directivas de control de tipos de archivo, metadatos, reglas de reescritura, aliases y actions.

FileInfo es una directiva bastante abierta, pero al menos no es tan abierta como configurar all para permitir cualquier tipo de regla en archivos .htaccess.

Finalmente es necesario recargar la configuración de Apache para que tome los cambios:

# service apache2 reload

Referencias

Apache Core Features - AllowOverride Directive


Tal vez pueda interesarte


Compartí este artículo